تحديد إصدارات الإصدار 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 بشكل صريح

لنفترض أن المكالمة المتزايدة التالية تم استلامها على الرقم 2018-12-28T06:30:10:123-07:00 لمطعم جديد تمامًا. وفي ما يلي طلب HTTP POST لذلك الكيان الذي يحمل رقم التعريف http://www.provider.com/some المبلغ عن مطعم، بافتراض أنّ خلاصة البيانات تستخدم مخطط المستودع 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/someمطعم" إصدار 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 تم تعيينه بشكل ضمني

لنفترض أن المكالمة المتزايدة التالية تم استلامها على الرقم 2018-12-28T06:30:10:123-07:00 لمطعم جديد تمامًا. وفي ما يلي طلب HTTP POST لذلك الكيان الذي يحمل المعرّف http://www.provider.com/someمطعم، بافتراض أن الخلاصة تستخدم مخطط المستودع 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/some المبلغ" عن إصدار هذا الكيان إصدار 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 بشكل صريح.
  • عند إجراء طلب تزايدي، من الضروري أيضًا تعديل الطابع الزمني المقابل للخلاصة (dateModified) قبل أن يجلبها محرّك بحث Google مرة أخرى.

مثال

يجلب Google الملف التالي في الساعة 11 صباحًا يوم 2018-12-28 لمطعم جديد تمامًا:

{
  "@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"
      ...
    }
  ]
}

في اليوم التالي (2018-12-29) عند الساعة 11 مساءً، يتم استرجاع الخلاصة مرة أخرى. لا يزال المطعم لديه الإصدار ذاته (1 مساءً من 28 ديسمبر)، لذلك يتم إسقاط هذا الكيان ويتم الاحتفاظ بالإصدار الحالي. ومع ذلك، يتم تحديث كيانات "القائمة والخدمة" بإصدار جديد.

الطوابع الزمنية لخرائط الموقع

لا يؤثر عنوان الاستجابة last-modified في خريطة الموقع في إصدار الكيان. ويؤثر ذلك في وقت جلب Google للخلاصة.

أفضل الممارسات

  • يجب تعديل عنوان الاستجابة فقط عندما تكون جميع الملفات محدّثة وجاهزة للجلب.
  • استخدام update_time وdelete_time بشكل تزايدي بشكل صريح
  • يمكنك ضبط update_time وdelete_time وdateModified على وقت تغيير البيانات من جانبك.