---
title: "新しいドキュメントエクストラクタをパスしてインデックス文書を作成する方法"
slug: "creating-an-index-document-by-passing-a-new-document-extractor"
abstract: "Ingestion APIを使ってインデックスドキュメントを作成し、新しいドキュメントエクストラクタをパスしてソースのインデックスに追加します。"
---
# 新しいドキュメントエクストラクタをパスしてインデックス文書を作成する方法

インジェスションAPIを使ってインデックスドキュメントを *プル* や *プッシュ* ソースに追加すると、一時的な [ドキュメントエクストラクタ](https://doc.sitecore.com/search/en/users/search-user-guide/en/configuring-document-extractors.html) を作成して属性を抽出できます。

ドキュメントエクストラクタは一時的なもので、インジェスションAPIリクエストの一部として渡されますが、Searchはそれを保存しません。つまり、同じエクストラクタを使って複数のインデックスドキュメントを作成したい場合は、呼び出しごとにエクストラクタ全体を渡す必要があります。

ユースケースに応じて、新しいドキュメントエクストラクタを使ってファイルからインデックスドキュメントを作成したり、URLから作成したりできます。

-   ファイルからインデックスドキュメントを作成するには、 {base-URL}/ingestion/v1/domains/{domainID}/sources/{sourceID}/entities/{entityID}/file/{documentID}?locale={locale}POST呼び出しを行います。このエンドポイントは、呼び出し先のマシン上のファイルからインデックスドキュメントを作成したい場合は使います。リクエストでは、インデックスしたいファイルへのパス( *例えば /Users/Jane/Documents/Summer/summer\_activites.pdf* など)を渡します。
-   URLからインデックス文書を作成するには、 {base-URL}/ingestion/v1/domains/{domainID}/sources/{sourceID}/entities/{entityID}/url/{documentID}?locale={locale}POST呼び出しを行います。リクエスト内で、インデックスしたいURL(例えば *[https://archive.doc.sitecore.com/xp/en/legacy-docs/web-forms-for-marketers-8.0.pdf](https://archive.doc.sitecore.com/xp/en/legacy-docs/web-forms-for-marketers-8.0.pdf)*)を渡します。Sitecore Search URLにアクセスし、属性値を抽出し、URLを表すインデックスドキュメントを作成します。

> !注Ingestion APIを使って、高度なウェブクローラーのようなプルソースにインデックス文書を追加すれば、新しいドキュメントエクストラクタを作成したり既存のものを使うことができます。
> 
> Ingestion APIを使ってAPIプッシュソースにインデックスドキュメントを追加する場合は、新しいドキュメントエクストラクタを作成する必要があります。これは、SearchのAPIプッシュソースがプレースホルダーインデックスのみを作成するためです。このソースタイプではドキュメントエクストラクタの設定はできません。

詳細なデータモデルを見るには[swagger参照](https://doc.sitecore.com/search/en/developers/ingestion-api/index.html) を、エクストラクタロジックの渡し方についてはドキュメント [エクストラクタ参照](https://doc.sitecore.com/search/ja/developers/search-developer-guide/using-the-ingestion-api-to-add-content-to-an-index/create-an-index-document/ingestion-api-document-extractor-reference.html "Ingestion API document extractor reference") をViewしてください。

## ドキュメント抽出器と取り込みAPI

[ドキュメントエクストラクタ](https://doc.sitecore.com/search/en/users/search-user-guide/en/configuring-document-extractors.html)は、URLから属性値を抽出する方法を定義するルールのセットです。オリジナルコンテンツの種類に応じて、[XPath](https://doc.sitecore.com/search/en/users/search-user-guide/en/create-an-xpath-document-extractor.html)、[JavaScript](https://doc.sitecore.com/search/en/users/search-user-guide/en/create-a-javascript-document-extractor.html)、[JSONPath](https://doc.sitecore.com/search/en/users/search-user-guide/en/create-a-jsonpath-document-extractor.html)、またはCSSを使ってルールを作成できます。

Ingestion APIを使って新しいドキュメント抽出器を作成する場合、リクエスト内で [特定の形式](https://doc.sitecore.com/search/ja/developers/search-developer-guide/using-the-ingestion-api-to-add-content-to-an-index/create-an-index-document/ingestion-api-document-extractor-reference.html "Ingestion API document extractor reference")の文字列として属性抽出ロジックを渡します。

> !ヒント管理者はSitecore Searchインターフェースを使って文書エクストラクターの設定を行い、[ローカライズされたコンテンツ](https://doc.sitecore.com/search/en/users/search-user-guide/en/configure-a-localized-advanced-web-crawler.html#UUID-4902883d-9947-4955-8cef-47a9dd7a16ff_section-idm1823351661301094)用のエクストラクターも含まれます。UIベースのステップの一部には、インジェスションAPIリクエストの本文に追加するコードと似たコードを追加することが含まれます。
> 
> ドキュメント抽出器の概念 [を理解し、コード](https://doc.sitecore.com/search/en/users/search-user-guide/en/configuring-document-extractors.html) サンプルを見るためにドキュメントを読むことをお勧めします。

## 例1:ファイルからインデックスドキュメントを作成する

この例では、JavaScriptドキュメントエクストラクターを使って、*/Users/Jane/Documents/Summer/summer\_activites.pdf*で利用可能なファイルからインデックスドキュメントを作成します。 *タイプ* 属性と *製品* 属性は固定値ですが、それ以外の属性については、JavaScriptを使って属性値を抽出するドキュメントエクストラクタを定義したいです。これを行うには、POST呼び出しを行ってください。 {base-URL}/ingestion/v1/domains/{domainID}/sources/{sourceID}/entities/{entityID}/file/{documentID}?locale={locale}

以下はサンプルのPOST cURLコールです:

curl --location '{base-url}/ingestion/v1/domains/{{domain}}/sources/{{source}}/entities/{{entity}}/file/{{documentId}}?locale={{locale}}' \\

--form 'file=@"/Users/Jane/Documents/Summer/summer\_activites.pdf"' \\

--form 'fields="{\\"items\\": {\\"type\\":\\"pdf\\",\\"product\\":\\"kids\\"}}"' \\

--form 'extractor="{\\"type\\": \\"js\\", \\"source\\": \\"function extract(request, response) { $ = response.body; title = $('\\''title'\\'').text(); description = $('\\''body'\\'').text().replace(/(\\\\\\\\r\\\\\\\\n|\\\\\\\\n|\\\\\\\\r)/gm, '\\'' '\\'').replace(/ +/g, '\\'' '\\'').replace(/\\\\\\\\.+/g, '\\''.'\\'').substring(0, 7000); return { '\\''title'\\'': title, '\\''description'\\'': description }; }\\"}"'

申請が成功した場合、以下の文200回答が届きます:

{
 "enqueued": true
}

返信では、enqueuedはSearchがこの文書をインデックスキューに追加したことを意味します。数分後、Searchの**Content Collection**セクションで新しい文書が表示されます。

## 例2:URLからインデックスドキュメントを作成する

この例では、XPathドキュメントエクストラクタを使い*[www.mybank.com/mortagages/fixed](http://www.mybank.com/mortagages/fixed)* 、URLからインデックスドキュメントを作成します。 *タイプ* と*name*属性は固定値ですが、*タイトル* と*image\_url*の属性値を抽出するためにXPath式を使ったドキュメントエクストラクタを定義したいです。これを行うには、POST呼び出し {base-URL}/ingestion/v1/domains/{domainID}/sources/{sourceID}/entities/{entityID}/url/{documentID}を呼び出します。

以下はサンプルのPOST cURLコールです:

curl --location '{{host}}/ingestion-api/v1/domains/{{domain}}/sources/{{source}}/entities/{{entity}}/url/{{documentId}}?locale={{locale}}' \\

--form 'url=@"www.mybank.com/mortagages/fixed"' \\

--form 'fields="{\\"items\\": {\\"type\\":\\"Mortages\\",\\"name\\":\\"Fixed mortgages \\"}}"' \\

--form 'extractor={"type":"xpath","rules":{"title":{"selectors":{"expression":"//meta@property=\\'dozen:page:id\\'/@content"}},"image\_url":{"selectors":{"expression":"//meta@property=\\'og:image\\'/@content"}}}}'

申請が成功した場合、以下の文200回答が届きます:

{
 "enqueued": true
}

返信enqueuedは、Searchがこの文書をインデックスキューに追加したことを意味します。数分後、この文書はSearchの**Content Collection**セクションに表示されます。