APIクローラーの設定
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecore Search APIクローラーは、JSONコンテンツの処理に特化した強力なクローラーです。認証が必要なソースコンテンツへのアクセス、複数言語でのインデックスドキュメント作成、属性値の抽出にJavaScriptを使うなど、複雑なユースケースをサポートしています。
APIクローラーは、URLやAPIエンドポイントにアクセスし、各URLやエンドポイントのコンテンツをインデックス化することで動作します。
!重要インデックス方法を選ぶ際はクローラータイプの詳細な仕様を参照してください。
これらの インデックスのベストプラクティス に従って、ウェブサイト全体を成功裏にクロールしたり 、頻繁に新しい更新をクロールしたりしましょう。
ほとんどの場合、まずウェブクローラーソースを作成することをお勧めします。その後、より多くの機能が必要だと感じたら、ウェブクローラーソースを高度なウェブクローラーソースに変換してください。
このウォークスルーでは、以下の方法を説明します:
!注元のコンテンツがクローラーアクセスする前に認証が必要な場合は、クローラー認証設定を設定してください。例えば、元のコンテンツにはGUIベースのユーザー名やパスワード、リクエストヘッダー内のアクセストークンやキーが必要かもしれません。これはソース作成後いつでも可能です。
APIクローラーソースを作成
ソースを作成するには:
- メニューバーで「 Sources」をクリックしてください。
- Click
情報源を追加してください。 - SOURCE NAMEフィールドにソースの名前を入力します。
- DESCRIPTION欄で、設定したいソースを数行入力してください。
- CONNECTORドロップダウンリストでAPIクローラーをクリックします。
- Click Save。エラーがなければ、Searchは新しいソースを作成します。
クローラー設定の設定
クローラーの設定を設定し、APIクローラーのスコープを定義する重要な高レベル構成を定義します。
APIクローラーの設定を設定するには:
-
Click Sourcesをクリックしてから作成したソースをクリックしてください。
-
ソースSettingsページで、クローラー Settingsの横API「編集
」をクリックします。 -
クローラーがクロールするURLの深さと数を設定するには:
-
最大深度フィールドで、クローラーがURL間進んでほしい最大レベル数を入力します。
例えば、5を入力します。
-
MAX URLsフィールドには、クローラーがクロールできる最大URL数を入力します。クローラーが抜け落ちないURLを確実にするために大きな数を入力してください。
例えば、5000を入力するとします。
-
-
並列にクロールするワーカー数の設定と、リクエスト間のオプションの遅延設定:
-
PARALLELISM (WORKERS) ドロップダウンメニューの値をクリックして、同時にクロールしコンテンツをインデックスするスレッド(ワーカー)の数を定義できます。
例えば、2を入力して2のワーカーだけを並列にクロールできるようにします。これはデフォルトの5ワーカーよりも少ないメモリを使用します。
-
オプションで、ワーカーを1つだけ設定している場合は、クローラーが次のインデックス対象URLにアクセスするまでの待機時間を定義できます。これを行うには、DELAY(MS) フィールドで時間をミリ秒単位で入力します。
例えば、3を入力します。
-
-
TIMEOUTフィールドには、クローラーが応答を待つ時間(ミリ秒単位)を入力してください。デフォルトは10,000msです。
例えば、5000を入力してください。これにより、クローラーはクロールするすべてのURLから応答を得るために5000ミリ秒、つまり5秒間待つことになります。
-
オプションでヘッダーを追加するには「 Add Header」をクリックしてください。次に、Keyフィールドにコンテンツが期待するユーザーエージェントの名前を入力します。 Valueフィールドに、コンテンツが期待するユーザーエージェントの値を入力してください。このセキュリティ対策により、Searchクローラーのみがデータをクロールでき、他のクローラーは行えません。
例えば、キーにuser-agent、値にsitecorebotを入力します。
-
オプションで、クローラーがナビゲーションクッキーを受け入れないようにしたい場合は、「追加Settings」セクションで「クロール中にナビゲーションクッキーを有効にする」をオフにしてください。
ナビゲーションクッキーはクローラーの経路を追跡し、訪問したURLを記録します。時にはクッキーがクローラーを誤誘導して、以前に訪問したURLを再インデックスさせることがあります。しかし、クッキーは特に認証が必要なウェブサイトにとって重要です。
-
Click Save。
トリガーの設定
高度なウェブクローラーがインデックス化するコンテンツを探すための出発点となる ように トリガーを設定しましょう。以下のようなトリガーを使用できます:
GraphQL APIエンドポイントでリクエストトリガーを設定するには:
-
ソースSettingsページのトリガーの横に「編集
」をクリックします。 -
Click
トリガーを追加してください。 -
トリガータイプのドロップダウンリストで「Request」をクリックします。
-
任意で、Body欄にリクエストの本文を入力します。
!注POSTやPatchリクエストを使う場合は、リクエストの本体に入力しなければなりません。
例えば、以下を使います:
{"query":"query getItem($path: String) {\n item(language: \"en\", path: $path) {id path children {results {name}\n }\n }\n}\n","variables":{"path":"/sitecore/content/mvpsite"}}
-
オプションでヘッダーを設定するには、「 ヘッダーを追加」をクリックします。次に、キー フィールドにコンテンツが期待するユーザーエージェントの名前を入力します。 Valueフィールドには、コンテンツが期待するユーザーエージェントの値を入力してください。
例えば、キーにuser-agent、値にsitecorebotを入力します。
!注このセキュリティ対策により、Searchクローラーのみがデータをクロールでき、他のクローラーは利用できません。
-
オプションで、メソッド のドロップダウンメニューで使いたいHTTPメソッドをクリックします。デフォルトであるGETが選択されます。
例えば、POSTをクリックします。
-
URLフィールドに、トリガーとして使いたいAPIエンドポイントを入力します。
!注トリガー応答はSitecore Searchには見えません。しかし、後でトリガーの応答を利用するリクエストエクストラクタを設定する際に覚えておくと便利です。
この例では、トリガーは以下のJSON応答を返します:
{ "data": { "item": { "id": "xxx", "path": "/sitecore/content/MvpSite", "children": { "results": { "name": "Home" }, { "name": "MVP Repository" }, { "name": "Shared Content" }, { "name": "Settings" }
} } }
リクエストエクストラクタの設定
リクエストエクストラクタはクローラーがクロールするための追加URLを作成します。
APIクローラーの設定では、Requestエクストラクタが非常に重要です。APIクローラーの場合、トリガーはURLではなくJSONを返します。これに対応するには、リクエストエクストラクタを設定し、トリガーの出力を使い、APIクローラーがクロールできるURLやAPIエンドポイントを返すように設定します。
この例では、トリガーが出力するJSONオブジェクトを使い、APIエンドポイントを生成するリクエストエクストラクタを設定する必要があります。
JSONオブジェクトを入力として使い、APIエンドポイントのリストを返すリクエストエクストラクタを作成するには:
-
Click Sourcesを選んで作成したソースを選択してください。
-
ソースSettingsページのRequestエクストラクターの横に、「編集
」をクリックします。 -
リクエストエクストラクタを作成するには、ドキュメントエクストラクタのページで:
-
名前欄に抽出器の意味のある名前を入力します。
例えば、Sitecoreの動画URLを入力してください。
-
オプションとして、URLs To Matchフィールドで使いたいTYPE式を選択し、そのVALUEを入力してください。
例えば、すべてのURLをこの形式でクロールするには、/ homeloans/ Glob Expressionを選択し、VALUEを **/homeloans/**.* .と入力してください。
-
-
JS SourceフィールドにURLのリストを返すJavaScript関数を貼り付けます。
!注関数はCheerio構文を使用し、オブジェクトの配列を返さなければなりません。
例えば、ペーストを貼り付けます:
function extract(request, response) { requests = ; if (response.body && response.body.data && response.body.data.item && response.body.data.item.children) { requests = response.body.data.item.children.results.map((e, i) => { name = e.name; path = JSON.parse(request.body).variables.path + "/" + name; return { url: request.url, method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ "query": "query getItem($path: String) {item(language: \"en\", path: $path) {id path rendered children {results {name}}}}", "operationName": "getItem", "variables": { "path": path } }) }; }); }
return requests; }
この関数は以下のAPIエンドポイントを返します:
{ "url": "https://edge.sitecorecloud.io/api/graphql/v1", "method": "POST", "headers": { "content-type": "application/json"
}, "body": "{"query":"query getItem($path: String) {item(language: \\"en\\", path: $path) {id path rendered children {results {name}}}}","operationName":"getItem","variables":{"path":"/sitecore/content/Sugcon/SugconEuSxa/Home"}}" }, { "url": "https://edge.sitecorecloud.io/api/graphql/v1", "method": "POST", "headers": { "content-type": "application/json"
}, "body": "{"query":"query getItem($path: String) {item(language: \\"en\\", path: $path) {id path rendered children {results {name}}}}","operationName":"getItem","variables":{"path":"/sitecore/content/Sugcon/SugconEuSxa/Media"}}" }, { "url": "https://edge.sitecorecloud.io/api/graphql/v1", "method": "POST", "headers": { "content-type": "application/json"
}, "body": "{"query":"query getItem($path: String) {item(language: \\"en\\", path: $path) {id path rendered children {results {name}}}}","operationName":"getItem","variables":{"path":"/sitecore/content/Sugcon/SugconEuSxa/Data"}}" }, .....
-
Click Save。
ドキュメントエクストラクタの設定
ドキュメントエクストラクタを設定し、各content itemから属性値の抽出方法を指定します。ドキュメントエクストラクタはリクエストエクストラクタが生成したURLやAPIエンドポイントをクロールします。
以下の種類の文書抽出器を使用できます:
!注APIクローラーの場合は、JavaScriptエクストラクタやJSONPathドキュメントエクストラを設定できます。
どのドキュメントエクストラクターを使うか決める際には、以下のポイントを念頭に置いてください。
トリガーやリクエストエクストラクタの出力がJSONであれば、JSONPathドキュメントエクストラクタやJavaScriptドキュメントエクストラクタを使用できます
トリガーやリクエストエクストラクタの出力がXMLの場合は、JavaScriptドキュメントエクストラクタを使用してください。
JavaScript関数とURLをマッチングするJSONPath文書エクストラクタを作成するには:
-
メニューバーで「 Sources」をクリックしてください。
-
作成したソースを選択します。
-
ソースSettingsページで**、ドキュメント抽出器**の横に「編集
」をクリックします。 -
ドキュメントエクストラクターを作成するには、ドキュメントエクストラクターのページで:
-
名前欄に抽出器の意味のある名前を入力します。
例えば、Sitecore cloudを入力します。
-
エクストラクタータイプドロップダウンメニューでJSONPathをクリックします。
-
オプションとして、このエクストラクタのロジックが特定のパターンに一致するURLにのみ適用されるようにするために、URLを「Match」に設定してください。これを行うには、「URLs To Match」フィールドで「Add Matcher」をクリックし
「Add Matcher」をクリックし、使いたい式のタイプを選択し、その式の値を入力してください。例えば、TYPEドロップダウンメニューでJSをクリックし、次の式を入力してJavaScriptを使えば、エクストラクタがリアクションのリアクションがbody.data.item.renderedの値を持つAPIエンドポイントからのみ属性を抽出するようにします。
function match(request, response) { return response.body.data.item.rendered != null && response.body.data.item.rendered.sitecore.route.placeholders'headless-main'.length > 0; }
-
-
タグ付けセクションで「タグ付け追加」をクリックします。その後、タグエディターのタグドロップダウンメニューでタグを選択します。例えば、コンテンツを選択します。
!注ドキュメントエクストラクタでは、それぞれがユニークなタグにリンクされた複数のタグガーを作成できます。このようにして、各タグ付け者は以下の通りになります:
-
索引文書のセットを生成します。
-
複数のルールを持つことができ、それぞれのルールが1つの属性の抽出ロジックを定義します。
例えば、5つのルールを持つタグ付け器は、それぞれ5つの属性を持つ1つの文書セットを生成します。
3つのタグ付け器でそれぞれ1つのルールを持つと、それぞれ1つの属性を持つ3つの文書セットが得られます。
-
-
タグエディターで、属性を抽出するために以下の詳細を入力してください:
-
Attributeドロップダウンメニューで、設定したい属性をクリックします。
例えば、「 **説明」**をクリックします。
-
**「Value」**タイプのドロップダウンメニューで、属性値を固定値にするか式にするかを選択します。
例えば、「 **表現」**をクリックします。
-
EXPRESSIONフィールドにJSONPath式を入力し、属性値が得られます。
例えば、..placeholders'headless-main'..fields.Descriptionキーの からから descriptionの値を得るには、enterを
..placeholders'headless-main'..fields.Description.value
-
-
オプションで、属性値を取得する複数の方法を設定するには、「選択機能を追加
」をクリックします。次に、2つ目のセレクターのExpressionフィールドに、属性値を生成するJSONPath式を入力します。例えば、2つ目の選択肢として、..placeholders'headless-main'..fields.Textタグからdescriptionの値を取得したいです。これを取得するには、次のJSONPath式を入力します。
..placeholders'headless-main'..fields.Text.value
!注複数のセレクタがある場合、Searchはそれらを時系列順に実行し、結果を出す式に到達したところで停止します。
-
他の属性の抽出方法を設定するには、「ルール
を追加」をクリックし、ステップ5と6を繰り返してください。例えば、説明 属性の抽出方法を設定したら、タイトル、サブタイトル、画像 属性の抽出方法を設定できます。
-
タグエディターで「 保存」をクリックします。
-
(任意)別のタグの属性を抽出するには、タグ付け
追加ボタンをクリックし、タグのドロップダウンメニューでタグをクリックしてステップ5から8までを繰り返してください。 -
ドキュメント抽出器のページで、保存をクリックします。
スケジュールのスキャン
クローラースケジュールを作成するには:
-
メニューバーで「 Sources」をクリックしてください。
-
クロールをスケジュールしたいソースをClickしてください。
-
ソースSettingsページで、クローラースケジューラーの横
編集をクリックしてください。 -
Searchでスケジュールクロールを開始したいタイミングを設定するには、STARTSドロップダウンメニューの値をクリックしてください。スケジュールをできるだけ早く開始したい場合は 、「いつでも」を選択してください。特定の日付からクロールを開始したい場合は、「 Specific Date」をクリックし、日付選択機能で日付をクリックしてください。
-
定期的なスケジュールでクロールを実行させるには、REPEATドロップダウンメニューで 「はい」をクリックします。
!ヒント将来の日に一度だけクロールをスケジュールするには、REPEATドロップダウンメニューで「 **DOES NOT REPEAT」**をクリックしてください。この設定では、ステップ4で選択した日にクロールが発生し、繰り返しません。
-
クロールの頻度を定義するには、「 Repeats every field」の横にある値をクリックしてください。 1から99までの任意の値を間隔として、日数、週、または( 生産 ドメインのみ) 時間 単位をクリックできます。例えば、4週間ごとにクロールを実行したい場合は、4と 週をクリックしてください。
-
クロール開始時間を定義するには、RUN TIMEドロップダウンメニューの値をクリックしてください。例えば、クロールを深夜0時に開始したい場合は12:00 AMをクリックしてください。表示される時間は自動的にあなたのタイムゾーンに合わせて調整されます。
-
クローラースケジュールの終了時間を設定するには、END DATEドロップダウンメニューの値をクリックしてください。スケジュールを無期限に継続したい場合は「 Never」を選択してください。特定の日付でクロールを終了させたい場合は、「 Specific Date」をクリックし、日付ピッカーで日付をクリックしてください。
-
Click Save。
ソースへの更新を公開する
最初のスキャンとインデックスを始めるには、必ずソースを公開してください。
情報源を公開するには:
- メニューバーで「 Sources」をクリックしてください。
- 公開したいソースをClickで「 公開」をクリックします。
- ソース公開ダイアログで、このソースの再クロールをSearchしたい場合は、「公開後にソース再クロールをトリガー」チェックボックスを選択してください。
- Click Publish。