データストアで基本的なウェブサイト検索を使用している場合、ストアのインデックスの鮮度は、Google 検索で利用できる情報の鮮度を反映します。
高度なウェブサイト インデックス登録がデータストアで有効になっている場合、データストア内のウェブページは次の方法で更新されます。
- 自動更新
- 手動更新
- サイトマップベースの更新
このページでは、自動更新と手動更新について説明します。サイトマップベースの更新を理解して実装するには、サイトマップに基づくインデックスと更新をご覧ください。
自動更新
Vertex AI Search では、次のように自動更新が実行されます。
- データストアを作成すると、含まれるページの最初のインデックスが生成されます。
- 最初のインデックス登録後、新しく検出されたページがインデックスに登録され、ベストエフォート方式で既存のページが再クロールされます。
- 30 日あたり 50 クエリのレートでクエリが発生するデータストアは定期的に更新されます。
手動更新
ウェブサイトの高度なインデックス登録が有効になっているデータストア内の特定のウェブページを更新するには、recrawlUris
メソッドを呼び出します。uris
フィールドを使用して、クロールする各ウェブページを指定します。recrawlUris
メソッドは長時間実行オペレーションであり、指定したウェブページがクロールされるか、24 時間後にタイムアウトするまで実行されます。recrawlUris
メソッドがタイムアウトした場合は、クロールする残りのウェブページを指定してメソッドを再度呼び出すことができます。operations.get
メソッドをポーリングして、再クロール オペレーションのステータスをモニタリングできます。
再クロールに関する制限
ウェブページをクロールできる頻度と一度にクロールできるウェブページの数には上限があります。
- 1 日あたりの呼び出し。
recrawlUris
メソッドの呼び出し回数の上限は、1 プロジェクトあたり 1 日に 5 回です。 - 呼び出しあたりのウェブページ数。
recrawlUris
メソッドの呼び出しで指定できるuris
値の最大数は 10,000 です。
データストア内のウェブページを再クロールする
ウェブサイトの高度なインデックス登録が有効になっているデータストア内の特定のウェブページを手動でクロールできます。
REST
コマンドラインを使用してデータストア内の特定のウェブページをクロールするには、次の操作を行います。
データストア ID を確認します。データストア ID がすでにある場合は、次のステップに進みます。
Google Cloud コンソールで [Agent Builder] ページに移動し、ナビゲーション メニューで [データストア] をクリックします。
データストアの名前をクリックします。
データストアの [データ] ページで、データストア ID を取得します。
uris
フィールドを使用して、クロールする各ウェブページを指定し、recrawlUris
メソッドを呼び出します。各uri
は、アスタリスク(*
)が含まれていても、単一のページを表します。ワイルドカード パターンはサポートされていません。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/siteSearchEngine:recrawlUris" \ -d '{ "uris": [URIS] }'
以下を置き換えます。
PROJECT_ID
: Google Cloud プロジェクトの ID。DATA_STORE_ID
: Vertex AI Search データストアの ID。URIS
: クロールするウェブページのリスト(例:"https://example.com/page-1", "https://example.com/page-2", "https://example.com/page-3"
)。
出力は次のようになります。
{ "name": "projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/operations/recrawl-uris-0123456789012345678", "metadata": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1alpha.RecrawlUrisMetadata" } }
再クロール オペレーションのステータスをモニタリングするときに、
name
値をoperations.get
オペレーションの入力として保存します。
再クロール オペレーションのステータスをモニタリングする
recrawlUris
メソッドは、データストア内のウェブページをクロールするために使用します。これは、指定したウェブページがクロールされるか、24 時間後にタイムアウトするまで実行される長時間実行オペレーションです。この長時間実行オペレーションのステータスをモニタリングするには、recrawlUris
メソッドによって返された name
値を指定して operations.get
メソッドをポーリングします。レスポンスで、(1)すべてのウェブページがクロールされたか、(2)すべてのウェブページがクロールされる前にオペレーションがタイムアウトしたことが示されるまで、ポーリングを続けます。recrawlUris
がタイムアウトした場合は、クロールされなかったウェブサイトを指定して、再度呼び出すことができます。
REST
コマンドラインを使用して再クロール オペレーションのステータスをモニタリングする手順は次のとおりです。
データストア ID を確認します。データストア ID がすでにある場合は、次のステップに進みます。
Google Cloud コンソールで [Agent Builder] ページに移動し、ナビゲーション メニューで [データストア] をクリックします。
データストアの名前をクリックします。
データストアの [データ] ページで、データストア ID を取得します。
operations.get
メソッドをポーリングします。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1alpha/OPERATION_NAME"
以下を置き換えます。
PROJECT_ID
: Google Cloud プロジェクトの ID。OPERATION_NAME
: オペレーション名。データストア内のウェブページを再クロールするのrecrawlUris
メソッドの呼び出しで返されるname
フィールドにあります。長時間実行オペレーションを一覧表示してオペレーション名を取得することもできます。
各レスポンスを評価します。
レスポンスで保留中の URI があり、再クロール オペレーションが完了していない場合は、ウェブページはまだクロール中です。ポーリングを続行します。
例
{ "name": "projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/operations/recrawl-uris-0123456789012345678", "metadata": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1alpha.RecrawlUrisMetadata", "createTime": "2023-09-05T22:07:28.690950Z", "updateTime": "2023-09-05T22:22:10.978843Z", "validUrisCount": 4000, "successCount": 2215, "pendingCount": 1785 }, "done": false, "response": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1alpha.RecrawlUrisResponse", } }
レスポンス フィールドは次のとおりです。
createTime
: 長時間実行オペレーションの開始時間を示します。updateTime
: 長時間実行オペレーションのメタデータが最後に更新された日時を示します。オペレーションが完了するまで、メタデータは 5 分ごとに更新されます。validUrisCount
:recrawlUris
メソッドの呼び出しで 4,000 個の有効な URI を指定したことを示します。successCount
: 2,215 個の URI が正常にクロールされたことを示します。pendingCount
: 1,785 個の URI がまだクロールされていないことを示します。done
: 値がfalse
の場合、再クロール オペレーションがまだ進行中であることを示します。
レスポンスで保留中の URI がないこと(
pendingCount
フィールドが返されない)が示され、再クロール オペレーションが完了すると、ウェブページがクロールされます。ポーリングを停止します。この手順を終了できます。例
{ "name": "projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/operations/recrawl-uris-0123456789012345678", "metadata": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1alpha.RecrawlUrisMetadata", "createTime": "2023-09-05T22:07:28.690950Z", "updateTime": "2023-09-05T22:37:11.367998Z", "validUrisCount": 4000, "successCount": 4000 }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1alpha.RecrawlUrisResponse" } }
レスポンス フィールドは次のとおりです。
createTime
: 長時間実行オペレーションの開始時間を示します。updateTime
: 長時間実行オペレーションのメタデータが最後に更新された日時を示します。オペレーションが完了するまで、メタデータは 5 分ごとに更新されます。validUrisCount
:recrawlUris
メソッドの呼び出しで 4,000 個の有効な URI を指定したことを示します。successCount
: 4,000 個の URI が正常にクロールされたことを示します。done
: 値がtrue
の場合、再クロール オペレーションが完了したことを示します。
レスポンスで保留中の URI があり、再クロール オペレーションが完了している場合は、すべてのウェブページがクロールされる前に再クロール オペレーションがタイムアウトしました(24 時間後)。データストア内のウェブページを再クロールするからやり直します。
recrawlUris
メソッドの新しい呼び出しのuris
フィールドの値に、operations.get
レスポンスのfailedUris
値を使用します。例。
{ "name": "projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/operations/recrawl-uris-8765432109876543210", "metadata": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1alpha.RecrawlUrisMetadata", "createTime": "2023-09-05T22:07:28.690950Z", "updateTime": "2023-09-06T22:09:10.613751Z", "validUrisCount": 10000, "successCount": 9988, "pendingCount": 12 }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1alpha.RecrawlUrisResponse", "failedUris": [ "https://example.com/page-9989", "https://example.com/page-9990", "https://example.com/page-9991", "https://example.com/page-9992", "https://example.com/page-9993", "https://example.com/page-9994", "https://example.com/page-9995", "https://example.com/page-9996", "https://example.com/page-9997", "https://example.com/page-9998", "https://example.com/page-9999", "https://example.com/page-10000" ], "failureSamples": [ { "uri": "https://example.com/page-9989", "failureReasons": [ { "corpusType": "DESKTOP", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." }, { "corpusType": "MOBILE", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." } ] }, { "uri": "https://example.com/page-9990", "failureReasons": [ { "corpusType": "DESKTOP", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." }, { "corpusType": "MOBILE", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." } ] }, { "uri": "https://example.com/page-9991", "failureReasons": [ { "corpusType": "DESKTOP", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." }, { "corpusType": "MOBILE", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." } ] }, { "uri": "https://example.com/page-9992", "failureReasons": [ { "corpusType": "DESKTOP", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." }, { "corpusType": "MOBILE", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." } ] }, { "uri": "https://example.com/page-9993", "failureReasons": [ { "corpusType": "DESKTOP", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." }, { "corpusType": "MOBILE", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." } ] }, { "uri": "https://example.com/page-9994", "failureReasons": [ { "corpusType": "DESKTOP", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." }, { "corpusType": "MOBILE", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." } ] }, { "uri": "https://example.com/page-9995", "failureReasons": [ { "corpusType": "DESKTOP", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." }, { "corpusType": "MOBILE", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." } ] }, { "uri": "https://example.com/page-9996", "failureReasons": [ { "corpusType": "DESKTOP", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." }, { "corpusType": "MOBILE", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." } ] }, { "uri": "https://example.com/page-9997", "failureReasons": [ { "corpusType": "DESKTOP", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." }, { "corpusType": "MOBILE", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." } ] }, { "uri": "https://example.com/page-9998", "failureReasons": [ { "corpusType": "DESKTOP", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." }, { "corpusType": "MOBILE", "errorMessage": "Page was crawled but was not indexed by UCS within 24 hours." } ] } ] } }
レスポンス フィールドの説明を次に示します。
createTime
。長時間実行オペレーションが開始された時刻。updateTime
。長時間実行オペレーションのメタデータが最後に更新された日時。メタデータは、オペレーションが完了するまで 5 分ごとに更新されます。validUrisCount
。recrawlUris
メソッドの呼び出しで 10,000 個の有効な URI を指定したことを示します。successCount
。9,988 個の URI が正常にクロールされたことを示します。pendingCount
。12 個の URI がまだクロールされていないことを示します。done
。値がtrue
の場合、再クロール オペレーションが完了したことを示します。failedUris
。再クロール オペレーションがタイムアウトする前にクロールされなかった URI のリスト。failureInfo
。クロールできなかった URI に関する情報。10 を超える URI がクロールできなかった場合でも、最大で 10 個のfailureInfo
配列値が返されます。errorMessage
。URI がクロールされなかった理由(corpusType
による)。詳細については、エラー メッセージをご覧ください。
タイムリーな更新
最新のインデックスを確実に取得するには、新規または更新したページに対して手動更新を行うことをおすすめします。
エラー メッセージ
再クロール オペレーションのステータスをモニタリングしているときに、operations.get
メソッドをポーリング中に再クロール オペレーションがタイムアウトした場合、operations.get
はクロールされなかったウェブページのエラー メッセージを返します。次の表に、エラー メッセージ、エラーが一時的なもの(一時的なエラーで自動的に解決されるもの)かどうか、recrawlUris
メソッドを再試行する前に実行できるアクションを示します。一時的なエラーはすべてすぐに再試行できます。一時的でないエラーはすべて、修正を適用した後に再試行できます。
エラー メッセージ | 一時的なエラーですか? | 再クロール再試行前のアクション |
---|---|---|
ページはクロールされたが、24 時間以内に Vertex AI Search によってインデックスに登録されなかった | ○ | recrawlUris メソッドを呼び出す場合は、uris フィールドの値に operations.get レスポンスの failedUris 値を使用します。 |
サイトの robots.txt によってクロールがブロックされた |
× | ウェブサイトの robots.txt ファイルで URI のブロックを解除し、Googlebot ユーザー エージェントがウェブサイトをクロールできるようにして、再クロールを再試行します。詳しくは、robots.txt ファイルの作成と送信方法をご覧ください。
robots.txt ファイルにアクセスできない場合は、ドメイン所有者にお問い合わせください。 |
ページにアクセスできない | × | recrawlUris メソッドを呼び出すときに指定した URI を確認します。URI パターンではなく、リテラル URI を指定してください。 |
クロールがタイムアウトした | ○ | recrawlUris メソッドを呼び出す場合は、uris フィールドの値に operations.get レスポンスの failedUris 値を使用します。 |
ページが Google クローラによって拒否された | ○ | recrawlUris メソッドを呼び出す場合は、uris フィールドの値に operations.get レスポンスの failedUris 値を使用します。 |
Google クローラで URL をクロールできなかった | × | リダイレクトが複数ある場合は、最後のリダイレクトの URI を使用して再試行します |
ページが見つかりませんでした(404) | × | recrawlUris メソッドを呼び出すときに指定した URI を確認します。URI パターンではなく、リテラル URI を指定してください。
「4xx」エラーコードで応答したページはインデックスから削除されます。 |
ページには認証が必要です | × | 高度なウェブサイト インデックス登録では、認証を必要とするウェブページのクロールはサポートされていません。 |
削除されたページの処理方法
ページを削除した場合は、削除した URL を手動で更新することをおすすめします。
ウェブサイトのデータストアが自動または手動で更新される際に、ウェブページが 4xx
クライアント エラーコードまたは 5xx
サーバー エラーコードで応答した場合、応答しないウェブページはインデックスから削除されます。