實體版本管理

透過動態饋給或即時更新傳送至 Google 的每個實體都有附加版本。這個版本是以時間戳記的形式提供。在動態饋給中,您可以使用 dateModified 屬性為每個實體提供時間戳記。如果不含動態饋給實體,系統會將版本設為動態饋給擷取的開始時間。在即時更新 batchPushbatchDelete 中,系統會使用 generation_timestampdelete_time 欄位來設定版本。如果不包含這個欄位,版本會設為收到要求的時間。請參閱關聯清查結構定義中的時間值預期格式。

Google 只會處理版本等於或較上次接受版本的實體 (例如餐廳、菜單或服務)。否則,系統不會擷取實體,並記錄 Stale Entity 錯誤。當實體更新為新版本時,上次修改的時間戳記會更新為當下的更新時間。

範例

假設動態饋給是在世界標準時間 6 月 16 日 01:10 產生,並包含以下實體範例。

{
  "@type": "Restaurant",
  "@id": "restaurant12345",
  "dateModified": "2022-06-16T01:10:00.000Z",
  ...
}

Google 尚未擷取動態饋給。當天稍晚,2022-06-16T01:22:00.000Z 收到了內含下列實體的即時更新 batchPush 要求。

{
  "records": [
    {
      "data_record": "{\"@type\": \"Restaurant\",\"@id\": \"restaurant12345\" ...",
      "generation_timestamp": "2022-06-16T01:20:00.000Z"
    }
  ]
}

餐廳實體 ID restaurant12345 的版本現在是 2022-06-16T01:20:00.000Z,實體上次修改的時間戳記則設為 2022-06-16T01:22:00.000Z。簡單來說,上次修改時間是指實體在 Google 商品目錄中更新的時間,版本則是即時更新要求的 generation_timestamp 值,或是動態饋給中的 dateModified 值。

動態饋給擷取作業自 6 月 16 日 02:00 (世界標準時間) 開始。在這種情況下,系統會將 2022-06-16T01:10:00.000Z 版動態饋給中收到的實體視為過時,因此不會擷取。因此,Google 會透過即時更新要求,繼續為實體提供 2022-06-16T01:20:00.000Z 版本。

最佳做法:

  • 為每個實體在動態饋給中導入時間戳記。
  • 即時更新變更套用至下一個動態饋給,並將動態饋給實體中的 dateModified 時間戳記設為您建立動態饋給的目前時間。