APIクローラーを構成する

日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecore Search APIクローラーは、JSONコンテンツを処理するために特別に設計された強力なクローラーです。ソースコンテンツにアクセスするための認証の必要性、複数の言語でのインデックスドキュメントの作成、JavaScriptを使用した属性値の抽出など、複雑なユースケースをサポートします。

APIクローラーは、URLまたはAPIエンドポイントにアクセスし、各URLまたはエンドポイントのコンテンツにインデックスを付けることによって機能します。

大事な

インデックス作成方法を選択するときは、クローラータイプの詳細な仕様を参照してください。

これらの インデックス作成のベスト プラクティス に従って、完全なWebサイトを正常にクロール したり、頻繁に新しい更新をクロールしたりします。

このチュートリアルでは、次の方法について説明します。

メモ

元のコンテンツがクローラがアクセスする前に認証が必要な場合は、クローラー認証設定を構成します。たとえば、元のコンテンツには、GUIベースのユーザー名とパスワード、または要求ヘッダーのアクセス トークンまたはキーが必要になる場合があります。これは、ソースの作成後いつでも実行できます。

APIクローラーソースの作成

ソースを作成するには:

  1. CONNECTORドロップダウンリストで、API Crawlerをクリックします。

クローラー設定を構成する

クローラー設定を構成して、APIクローラーの有効範囲を定義する重要な高レベルの構成を定義します。

APIクローラー設定を構成するには:

  1. Click Sourcesして、作成したソースをクリックします。

  2. Source SettingsページのAPI Crawler Settingsの横にあるEdit をクリックします。

  3. Click Save

トリガーを構成する

高度なWebクローラーがインデックスを作成するコンテンツを検索するための開始点 を提供するトリガーを 構成します。次のタイプのトリガーを使用できます。

GraphQL APIエンドポイントを使用してリクエストトリガーを設定するには:

  1. Source SettingsページのTriggersの横にあるEdit をクリックします。

  2. Click Add Trigger

  3. Trigger Typeドロップダウンリストで、Requestをクリックします。

  4. 必要に応じて、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"}}
  5. オプションで、ヘッダーを設定するには、Add Headerをクリックします。次に、Keyフィールドに、コンテンツに必要なユーザー エージェントの名前を入力します。 Valueフィールドに、コンテンツで想定されるユーザーエージェントの値を入力します。

    たとえば、Keyとしてuser-agentを入力し、Valueとしてsitecorebotと入力します。

    手記

    このセキュリティ対策により、他のクローラーではなく、Searchクローラーのみがデータをクロールできるようになります。

  6. 必要に応じて、Methodドロップダウン メニューで、使用するHTTPメソッドをクリックします。デフォルトのGETが選択されています。

    例えば、「 POST」をクリックします。

  7. URLフィールドに、トリガーとして使用するAPIエンドポイントを入力します。

    たとえば、https://edge.sitecorecloud.io/api/graphql/v1

手記

Sitecore Searchにトリガー応答が表示されません。ただし、トリガーの応答を使用する要求抽出器を後で構成するため、この点に留意すると便利です。

この例では、トリガーは次のJSONレスポンスを返します。

{
    "data": {
        "item": {
            "id": "xxx",
            "path": "/sitecore/content/MvpSite",
            "children": {
                "results": [
                    {
                        "name": "Home"
                    },
                    {
                        "name": "MVP Repository"
                    },
                    {
                        "name": "Shared Content"
                    },
                    {
                        "name": "Settings"
                    }
                ]
            }
        }
    }

要求抽出器を構成する

要求抽出器は、クローラーがクロールする追加のURLを作成します。

Request抽出器は、APIクローラーを構成するときに非常に重要です。APIクローラーの場合、トリガーはURLではなくJSONを返します。これを処理するには、トリガーの出力を使用し、APIクローラーがクロールするURLまたはAPIエンドポイントを返すようにリクエスト抽出器を構成します。

この例では、トリガーが出力するJSONオブジェクトを使用し、APIエンドポイントを生成するリクエスト抽出プログラムを構成する必要があります。

JSONオブジェクトを入力として使用し、APIエンドポイントのリストを返すリクエスト抽出器を作成するには、次のようにします。

  1. Click Sourcesして、作成したソースを選択します。

  2. Source SettingsページのRequest Extractorsの横にあるEdit をクリックします。

  3. 要求抽出器を作成するには、Document Extractorsページで次の操作を行います。

    • Nameフィールドに、抽出器のわかりやすい名前を入力します。

      たとえば、次のように入力します。 Sitecore video URLs.

    • オプションで、URLs To Matchフィールドで、使用する式のTYPEを選択し、その式のVALUEを入力します。

      たとえば、次の形式のすべてのURLをクロールするには、 <some text>/homeloans/<some text>Glob Expressionを選択し、VALUE**/homeloans/**.* として入力します。

  4. 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"}}"
        },
        .....
    ]
  5. Click Save

ドキュメント抽出器を構成する

各content itemから属性値を抽出する方法を指定するようにdocument extractorを構成します。ドキュメント抽出器は、要求抽出器が生成するURLまたはAPIエンドポイントをクロールします。

次のタイプのドキュメント抽出器を使用できます。

手記

APIクローラーの場合は、JavaScriptエクストラクタまたはJSONPathドキュメントエクストラクタを設定できます。

使用するドキュメント抽出器を決定するときは、次の点に留意してください。

  • トリガーまたはリクエスト抽出器の出力がJSONの場合は、JSONPath文書抽出器またはJavaScript文書抽出器を使用できます

  • トリガーまたは要求抽出器の出力がXMLの場合は、JavaScript文書抽出器を使用します。

スキャンのスケジュール

ソースへの更新の発行

最初のスキャンとインデックスを開始するには、ソースを公開する必要があります。

この記事を改善するための提案がある場合は、 お知らせください!