बैच फ़ीड में v1 वर्शन का इस्तेमाल

आपके बैच फ़ीड में, किसी इकाई के वर्शन को फ़ीड के लिफ़ाफ़े में 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 को कॉल आने के समय पर सेट होता है.

पहला उदाहरण: updated_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 रूप में वर्शन किया गया था और उस समय नहीं जब यह मिला था (10 सेकंड बाद में 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"
}

दूसरा उदाहरण: updated_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: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 बजे), इसलिए रेस्टोरेंट इकाई अब "2018-12-28T13: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"
      ...
    }
  ]
}

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

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

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

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

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