बैच फ़ीड में वर्शन 1 का वर्शन

आपके बैच फ़ीड में, इकाई के वर्शन को फ़ीड के dateModified फ़ील्ड के लिफ़ाफ़े से तय किया जाता है:

{
  "@context": "http://schema.googleapis.com",
  "dateModified": "2018-12-28T06:30:00:123-07:00",
  "@type": "DataFeed",
  "dataFeedElement": [
    /* All the items that are part of this feed go here */
  ]
}

dataFeedElement फ़ील्ड में दी गई सभी इकाइयों का टाइमस्टैंप एक जैसा होगा, जैसा कि लिफ़ाफ़े में दिया गया है.

उदाहरण के लिए, आपके पास दो इकाइयों वाला यह फ़ीड हो सकता है:

{
  "@context": "http://schema.googleapis.com",
  "@type": "DataFeed",
  "dateModified": "2018-12-28T06:30:00:123-07:00",
  "dataFeedElement": [
    {
      "@type": "Restaurant",
      "@id": "http://www.provider.com/somerestaurant",
      ...
    },
    {
      "@type": "Menu",
      "@id": "http://www.provider.com/somerestaurant/menu/1"
      ...
    }
  ]
}

मेन्यू और रेस्टोरेंट, दोनों इकाइयों को मिलने और प्रोसेस होने के बाद, उन्हें "2018-12-28T06:30:00:123-07:00" के तौर पर अलग-अलग वर्शन किया जाएगा.

इंक्रीमेंटल अपडेट वाले वर्शन

इन्वेंट्री अपडेट का इस्तेमाल करके किसी इकाई को भेजने पर, वर्शन को update_time फ़ील्ड (ऐड/अपडेट कॉल के मामले में) या delete_time फ़ील्ड (मिटाएं कॉल के मामले में) पर सेट किया जाता है. ये फ़ील्ड ज़रूरी नहीं हैं, इसलिए Google को कॉल मिलने पर डिफ़ॉल्ट टाइमस्टैंप सेट होता है.

उदाहरण 1: update_time साफ़ तौर पर सेट किया गया

मान लें कि एक पूरी तरह नए रेस्टोरेंट के लिए नीचे दिया गया इंक्रीमेंटल कॉल 28-12-2018T06:30:10:123-07:00 पर मिला है. यहां बताया गया है कि आईडी और कोटेशन के साथ, उस इकाई के लिए एचटीटीपी पोस्ट अनुरोध क्या है. यह मानते हुए कि डेटा फ़ीड में v1 इन्वेंट्री स्कीमा का इस्तेमाल किया गया है:

POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json

नीचे, JSON पेलोड में update_time फ़ील्ड शामिल है. इकाई और आईडी का कोटेशन;http://www.provider.com/somerestaurant" इस इकाई के नतीजे का समय 6:30:00 है, न कि जब यह मिला (दस सेकंड बाद 6:30:10):

{
// This envelope is to be used for incremental.
  "entity": {
    // Note: "data" is not serialized as a string in our example for readability.
    "data": "[entity in JSON format serialized as a string]",
    "vertical": "FOODORDERING"
  },
  "update_time":"2018-12-28T06:30:00:123-07:00"
}

उदाहरण 2: update_time पूरी तरह से सेट नहीं है

मान लें कि एक पूरी तरह नए रेस्टोरेंट के लिए नीचे दिया गया इंक्रीमेंटल कॉल 28-12-2018T06:30:10:123-07:00 पर मिला है. यहां बताया गया है कि आईडी और कोटेशन के साथ, उस इकाई के लिए एचटीटीपी पोस्ट अनुरोध http://www.provider.com/somerestaurant" यह मानते हुए कि फ़ीड में v1 इन्वेंट्री इन्वेंट्री का इस्तेमाल किया गया है:

POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json

नीचे, JSON पेलोड के मुख्य हिस्से में update_time फ़ील्ड नहीं है. आईडी और कोटेशन की इकाई;http://www.provider.com/somerestaurant" इसलिए, इस इकाई के वर्शन का वर्शन 6:30:10:

{
// This envelope is to be used for incremental.
  "entity": {
    //Note: "data" is not serialized as a string in our example for readability.
    "data": "[entity in JSON format serialized as a string]",
    "vertical": "FOODORDERING"
  }
}

बैच और इंक्रीमेंटल के बीच वर्शनिंग

Google को भेजी जाने वाली इकाई को तब ही प्रोसेस और दिखाया जाता है, जब उसमें सबसे नया वर्शन दिया गया हो. ध्यान दें कि बैच से भेजी जाने वाली इकाइयों को प्रोसेस होने में आम तौर पर कुछ दिन लगते हैं, जबकि इंक्रीमेंटल एपीआई से भेजी गई इकाइयां तुरंत प्रोसेस की जाती हैं.

सबसे सही तरीके

  • update_time और dateModified फ़ील्ड को इंक्रीमेंटल और बैच में सेट करें. हालांकि, आपके सिस्टम में इकाई में बदलाव होने की स्थिति के मुताबिक, इन्हें सेट किया जा सकता है.
  • अगर बैच फ़ीड (फ़ाइल) में एक से ज़्यादा टॉप लेवल इकाइयां शामिल होती हैं (उदाहरण के लिए, आप अपने रेस्टोरेंट को सेवाओं और मेन्यू से जोड़ सकते हैं), तो किसी इकाई का डेटा अपडेट होने पर टाइमस्टैंप अपडेट करें.
  • इंक्रीमेंटल कॉल में, हमारा सुझाव है कि आप update_time फ़ील्ड को साफ़ तौर पर सेट करें.
  • यह ज़रूरी है कि इंक्रीमेंटल कॉल करने के बाद, Google से इसे फिर से फ़ेच करने से पहले, उससे जुड़ा फ़ीड टाइमस्टैंप (dateModified) भी अपडेट हो जाए.

उदाहरण

Google पूरी तरह से नए रेस्टोरेंट के लिए 28-12-2018 को सुबह 11 बजे ये फ़ाइल फ़ेच करता है:

{
  "@context": "http://schema.googleapis.com",
  "@type": "DataFeed",
  "dateModified": "2018-12-28T06:30:00-07:00",
  "dataFeedElement": [
    {
      "@type": "Restaurant",
      "@id": "http://www.provider.com/newrestaurant",
      ...
    },
    {
      "@type": "Menu",
      "@id": "http://www.provider.com/newrestaurant/menu/1"
      ...
    }
    {
      "@type": "Service",
      "@id": "http://www.provider.com/newrestaurant/service/1"
      ...
    }
  ]
}

ये इकाइयां पूरी तरह से प्रोसेस हो जाती हैं और इनका वर्शन 2018-12-28T06:30:00-07:00" होता है. बैच फ़ीड को प्रोसेस होने में समय लगता है. इसलिए, आम तौर पर दो दिन बाद इन्हें दिखाया जाता है.

हालांकि, दोपहर 1 बजे, पार्टनर के सिस्टम के पास रेस्टोरेंट के फ़ोन नंबर का अपडेट होता है, जिसकी वजह से नीचे दिया गया इंक्रीमेंटल कॉल होता है जो Google को 13:05 बजे (5 सेकंड बाद) मिलता है:

POST v2/apps/provider-project/entities/http%3A%2F%2Fwww.provider.com%2Fnewrestaurant:push
Host: actions.googleapis.com
Content-Type: application/ld+json
{
// This envelope is to be used for incremental.
  "entity": {
    //Note: "data" is not serialized as a string in our example for readability.
    "data": "[entity in JSON format serialized as a string]",
    "vertical": "FOODORDERING"
  },
  "update_time":"2018-12-28T13:00:00-07:00"
}

update_time का वर्शन साफ़ तौर पर दिखाया गया है और यह उसी दिन सुबह 6:30 बजे से ज़्यादा है. इसलिए, रेस्टोरेंट इकाई का फ़ॉर्मैट अब 28-12-2018T13:00:00-07:00" है. हालांकि, मेन्यू और सेवा इकाइयों का वर्शन अब भी "2018-12-28T06:30:00-07:00" है.

एक इंक्रीमेंटल कॉल हुआ था, इसलिए बैच फ़ीड को नए टाइमस्टैंप से अपडेट किया गया. साथ ही, उससे जुड़े बदलाव उन इकाइयों पर भी लागू होते हैं जो रेस्टोरेंट की इकाई में अपडेट की गई हैं.

{
  "@context": "http://schema.googleapis.com",
  "@type": "DataFeed",
  "dateModified": "2018-12-28T13:00:00-07:00",
  "dataFeedElement": [
    {
      "@type": "Restaurant",
      "@id": "http://www.provider.com/newrestaurant",
      ...
    },
    {
      "@type": "Menu",
      "@id": "http://www.provider.com/newrestaurant/menu/1"
      ...
    }
    {
      "@type": "Service",
      "@id": "http://www.provider.com/newrestaurant/service/1"
      ...
    }
  ]
}

अगले दिन 21-12-2018 को रात 11 बजे, फ़ीड फिर से फ़ेच किया जाता है. रेस्टोरेंट में अब भी वही वर्शन (28 दिसंबर को दोपहर 1 बजे) है, इसलिए इस इकाई को हटा दिया जाता है और मौजूदा वर्शन को रखा जाता है. हालांकि, मेन्यू और सेवा की इकाइयों को नए वर्शन में अपडेट किया जाता है.

साइटमैप के टाइमस्टैंप

साइटमैप में last-modified रिस्पॉन्स हेडर, इकाई के वर्शन पर कोई असर नहीं डालता. इससे इस बात पर असर पड़ता है कि Google, फ़ीड को कब फ़ेच करेगा.

सबसे सही तरीके

  • रिस्पॉन्स हेडर को सिर्फ़ तब अपडेट करें, जब सभी फ़ाइलें अप-टू-डेट हों और वे फ़ेच किए जाने के लिए तैयार हों.
  • update_time और delete_time का इस्तेमाल इंक्रीमेंटल तरीके से करें.
  • अपनी ओर से डेटा बदलने पर update_time, delete_time और dateModified सेट करें.