---
title: "ドキュメントエクストラクタの設定"
slug: "configuring-document-extractors"
abstract: "Sitecore Searchクローラーのドキュメントエクストラ設定の説明。"
---
# ドキュメントエクストラクタの設定

ドキュメントエクストラクタは、元のコンテンツ内のURLやドキュメントからインデックスドキュメントを作成します。Sitecore Searchこれらのインデックスドキュメントを [ソースのインデックス](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items.html "Index items")に追加します。実行時に、Searchインデックスドキュメントを調べて結果を得ます。

ドキュメントエクストラクタは、各インデックスドキュメントに [属性](https://doc.sitecore.com/search/ja/users/search-user-guide/configure-entities/attributes.html "Attributes") と属性値のペアをkey:valueペアの形で追加します。ドキュメントエクストラクタを設定する際には、各属性の値をどのように抽出するかSitecore Search指定します。もしドキュメントエクストラクタが属性値を見つけられなければ、そのkey:valueペアをそのcontent itemのインデックスドキュメントに追加しません。ドキュメントエクストラクタが *必須属性*の値を見つけられなければ、Sitecore Searchそのcontent itemインデックス付けしません。

> !注 [ウェブクローラー](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configure-a-web-crawler.html "Configure a web crawler")の場合、ドキュメント抽出器は**Attribute Extraction**と呼ばれます。

> !注すべての非JavaScriptエクストラクタは、各属性で最初に一致した時点で停止します。JavaScriptエクストラクタはそのまま実行されます。

例えば、100のURLを持つサイトをクロールしたい場合、*content\_type*、*タイトル*、*説明*、*image\_url*属性を取得するようにクローラーを設定します。100のインデックス文書が生成され、それぞれに以下のkey:valueペアの一部または全部が含まれています。

content\_type:<content\_type\_value>
title:<title\_value>
description:<description\_value>
image\_url: <image\_url\_value>
id: <id\_value>

後で、ウェブサイトをSearchと統合すると、以下の検索体験を作成できます。

-   各項目の *タイトル*、 *説明*、 *画像* を含む結果ページを表示してください。
-   ユーザーが*ニュース*や*ブログ*など*content\_type*で絞り込みできるようにしましょう。
-   ユーザーが *タイトル*の結果を昇順または降順に並べられるようにします。

属性の値を抽出しない限り、その属性を使って検索体験を作成することはできません。前の例では、元のコンテンツに各コンテンツの項目に対する*average\_rating*を表示できず、*average\_rating*属性を設定していても、ユーザーにその内容ごとにそのを示すことはできません。これは、クローラーに*average\_rating*属性を抽出するよう設定していなかったためです。

ウェブクローラーを除き、1つのソースに対して複数のドキュメントエクストラクターを作成できます。通常は、異なるURLマッチングルールや属性抽出ルールが必要な各コンテンツセクションごとに1つのドキュメントエクストラクターを作成します。例えば、銀行のウェブサイトには *個人*、*ローン*、*商業*の3つのセクションがあり、それぞれ異なるURLやメタデータパターンを持っています。これを処理する一つの方法は、*mybank.com/personal*用、*mybank.com/loans*用、*mybank.com/commercial*用にそれぞれ1つのドキュメントエクストラクターを作成することです。

> !注すべてのソースがすべての設定を提供しているわけではありません。特定のソースがどのような構成を持っているか知りたい場合は、そのソースのウォークスルーや、[どのソースを使うかのトピック](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/identify-the-required-source-type.html "Identify the required source type")をご覧ください。

## 必須属性

Sitecore Search URLやドキュメントからインデックスドキュメントを作成する前に、すべての必須属性を抽出できなければなりません。必須属性の値を抽出できない場合は、そのURLやドキュメントをインデックスしません。

必須属性には2種類あります。すべてのドメインに必須の属性と、ドメインのみに必須の属性です。

すべてのドメインには以下の必須属性があります:

-   *url* - 各ページやドキュメントごとにURLの抽出方法を設定する必要があります。
    
-   *type* - 各ページやドキュメントごとに型の抽出方法を設定する必要があります。
    
-   *id* - Searchは作成する各インデックスドキュメントに対して一意のIDを生成し、割り当てます。ただし、値を抽出して割り当てることは可能です。
    
    > !注*id*の抽出方法を明示的に設定しなければならないシナリオは2つあります。ローカライズされたコンテンツがある場合と、単一のURLやドキュメントから複数のインデックス文書を生成する場合です。どちらの場合も、コンテンツの一部にあるすべてのインデックスドキュメントが同じIDを持つことを確認してください。これは、インデックスドキュメントIDを使用するルールやその他の設定がすべてのインデックスドキュメントに適用されることを確認するために重要です。
    > 
    > 例えば、御社の*About Us*ページは英語(米国)を含む6つのロケーションで利用可能です。 *ID*属性の抽出方法を設定しないと、Search 6 *About Us*インデックスドキュメントごとに6つの異なるIDが生成されます。これはインデックスドキュメントのIDを使う設定時に問題を引き起こします。例えば、多くのピンルールは特定のIDを持つcontent itemを特定のスロットにピン留めすることに基づいています。 *About Us*をピン留めしたい場合、英語(米国)版のIDを使うと、英語(米国)のロケーションのユーザーだけがピン留めcontent item見えます。他の5つの地域のユーザーは、*About Us*のローカライズ版がピン留めされているのを見ません。この問題を避けるために、同じコンテンツのローカライズ版が同じIDを持つことを必ず確認してください。
    
    > !重要異なるエンティティ間で[同じIDを文書に割り当てるのはルール](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/optimizing-search.html "Optimizing Search") やコンテンツの挙動に矛盾が生じる恐れがあります。参照の整合性を保つために、各インデックス文書はエンティティ内で一意のIDを持つようにしてください。
    

これらの属性に加えて、ドメインには必須属性として設定されている場合があります。それらを抽出する方法も設定する必要があります。

## それに合わせたURLを

> !注URLを使って、高度なウェブクローラーやAPIクローラーのソースと機能を照合できます。

ドキュメントエクストラクターが定義されたパターンに一致するURLのページや文書のみを抽出するようにするために、**URLをMatchに設定してください**。

正規表現、[Glob式](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configuring-document-extractors/create-a-javascript-document-extractor.html "Create a JavaScript document extractor")、[またはJavaScript関数](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configure-an-api-crawler.html#UUID-9f83886b-170b-9187-f299-7654aa1e4542_UUID-93c6c556-f805-ab00-4a99-345866840d39) を使ってURLパターンを定義できます。

この設定の一般的なユースケースは、ソースコンテンツの異なる部分ごとに異なるエクストラクターを作成することです。例えば、HTMLページ用のドキュメントエクストラクターとPDFコンテンツ用のドキュメントエクストラクターを作成できます。

リダイレクトの場合、リダイレクトされたURLを含めるように**Matchに**URLを設定してください。

## 固定値の使用

> !注すべてのクローラーソースで属性に固定値を指定できます。

ソースによってインデックスされたすべてのドキュメントで属性が一定の値を持たせたい場合は、その属性に固定値を指定できます。つまり、すべてのインデックスドキュメントがこの属性に対して同じ事前定義の値を持つことを意味します。クローラーはページのメタデータからこの属性値を抽出しません。

この方法は、すべてのインデックスドキュメントで同じ値を持つ属性が必要な場合に便利ですが、その属性値がコンテンツのメタデータに含まれていなかったり、一部のページでしか利用できなかったり、異なるページで異なる値を持つ場合に便利です。

一般的なユースケースとしては、*タイプ* 属性に固定値を指定することです。例えば、銀行のウェブサイトからコンテンツをインデックスする2つのソースがあります。一方は商業銀行セクションのコンテンツをインデックスし、もう一方は消費者銀行セクションのコンテンツをインデックスします。 *タイプ* 属性を扱う一つの方法は、最初のソースに *商業* の固定値、2番目のソースで *消費者* の固定値を指定することです。

## HTMLメタタグやOGタグを使って属性値を抽出する方法

HTMLのメタタグやOGタグを使って属性値を抽出するには、Searchに使いたいメタタグやOGタグの名前を属性値として入力するだけです。その後、Searchは内部でXPath式を作成し、その属性値に評価します。

> !注 [ウェブクローラー](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configure-a-web-crawler.html "Configure a web crawler") ソースではHTMLメタタグやOGタグ抽出法を利用できます。

ページヘッダーに属性値があり、Searchが簡単なXPath式でアクセスできる場合はこの方法を使うことをお勧めします。

HTMLメタタグやOGタグを入力すると、Searchが内部で生成するXPath式は見えません。しかし、Searchが生成する式を知っておくと、この属性抽出が自分に合っているかどうかを評価するのに役立ちます。

以下のセクションでは、Searchが入力したmetaタグやOGタグからXPath式をどのように構築するかについて説明します。

### HTMLメタタグの使用例

まず、Searchはメタタグ名を入力したと仮定したXPath式を作成します。その式で結果が出なければ、Searchはプロパティ名を入力したと仮定したXPath式を作成します。

例えば、*author*と入力すると、まずXPath式Search構成します: //meta@name='author'/@content。この式が値を示すなら、Searchは停止します。この式が値を示さない場合は、Search XPath式を作成します: //meta@property='author'/@content。

### OGタグの使用例

og *:site\_name*と入力すると仮定します。このフレーズに「OG」が含まれているため、SearchはOGタグを入力したと仮定し、以下のXPath式を構築します。

//meta@property='og:site\_name'/@content

## XPath文書抽出器の使用

XPathの属性値に評価する式を使いたい場合は、XPathドキュメントエクストラクターを使いましょう。

> !注XPathドキュメントエクストラクタをウェブクローラーや [高度なウェブクローラー](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configure-an-advanced-web-crawler.html#UUID-5c9b7f2d-30b5-c5f3-a270-aae5d04210ce_section-idm4530845103763233495976734544 "Create a document extractor") ソースで使うことができます。ただし、ウェブクローラーの場合、設定が必要なのはXPathの表現式だけで属性値を抽出できます。

XPathを使って属性を抽出するには以下の設定を使用します。

Settings

概要

タグ

Source Settings > Tags Definitionsで定義したエンティティベースのタグです。

局所的

この文書が複数のロケ地で利用可能かどうか。この属性はドメインが複数のロケートを持つ場合にのみ表示されます。

Attribute

値を抽出したい属性。ドメイン設定時に定義した属性からAdministration > Domain Settingsセクションから選択してください。

価値タイプ

設定したいルールの種類。以下を使えます:Fixed - この属性を持つすべての文書に固定値を追加できます。Expressions - 属性値を抽出するための式を入力 注:この設定はウェブクローラーには適用されません。

セレクター

Sitecore Search文書に属性タグを追加する際に使うルールです。これは、ドロップダウンメニューの「Value」タイプで「Expressions」を選択すると確認できます。CSSまたはXPathのEXPRESSIONとDEFAULT TO値を追加してください。属性に対して複数のセレクタを定義できます。これは、ソースコンテンツに異なるコンテンツ配置がある場合に役立ちます。例えば、タイトルの値は

# 一部のcontent itemsにはHTMLタグを付けますが、他のcontent itemsではog:titleのメタタグで使います。複数のセレクターがある場合、Searchはトップからセレクターを使い、セレクタが属性値を返すまで実行します。注意:この設定はウェブクローラーには適用されません。

### XPath抽出属性のサンプル

XPathドキュメントエクストラクタを選択すると、設定を助けるためにSearchは属性と対応するXPath抽出式を追加します。任意のサンプル属性の設定を編集または削除できます。

Searchはデフォルトで以下のサンプル属性とXPath式を追加します:

-   *タイプ* - //meta@property='og:type'/@content
-   *URL* - //meta@property='og:url'/@content
-   *image\_url* - //meta@property='og:image'/@content
-   *名前* - //meta@property='og:title'/@content
-   *説明* - //meta@property='og:description'/@content

## JavaScriptドキュメントエクストラクタの使用

JavaScriptで属性を抽出するには、クローラーが各属性の値をどのように取得すべきかを定義する関数を追加してください。通常、XPath式だけでは属性の値を抽出できない場合にJavaScriptドキュメントを使用します。

> !注 [高度なウェブクローラー](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configuring-document-extractors/create-a-javascript-document-extractor.html "Create a JavaScript document extractor") や[APIクローラー](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configure-an-api-crawler.html#UUID-9f83886b-170b-9187-f299-7654aa1e4542_section-idm4601236874884833662956419681 "Configure a document extractor") ソースを組み合わせたJavaScriptドキュメントエクストリクタを使うことができます。

例えば、ページメタデータから取得したURLの一部を属性として保存する前に置き換えたい場合は、JSエクストラクタを使う必要があります。また、JavaScript関数を使って複合属性を作成することも可能です。つまり、複数の既存の属性の値を組み合わせて新しい属性を作成することです。

定義したJavaScript関数は以下の条件でなければなりません:

-   [Cheerio](https://cheerio.js.org/)の構文を使いましょう。つまり、次のフォーマットを使わなければなりません:
    
    function extract(request, response) {
     $ = response.body;
    }
    
-   オブジェクトの配列を返します。
    

構成を助けるために、Search metaタグからdescription、name、type、、のURL属性の値を得るサンプルJavaScript関数を追加します。

function extract(request, response) {
 $ = response.body;

 return {
 'description': $('metaname="description"').attr('content') || $('metaproperty="og:description"').attr('content') || $('p').text(),
 'name': $('metaname="searchtitle"').attr('content') || $('title').text(),
 'type': $('metaproperty="og:type"').attr('content') || 'website\_content',
 'url': $('metaproperty="og:url"').attr('content')
 };
}

この関数を編集したり、新しい関数を貼り付けたりできます。

より複雑なJavaScript関数のために[JavaScriptエクストラクタの設定](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configuring-document-extractors/create-a-javascript-document-extractor.html "Create a JavaScript document extractor") 方法についてはトピックを参照してください。

## JSONPathドキュメントエクストラクタの使用

JSONPathドキュメントエクストラクタを使ってJSONデータから属性値を抽出してください。

> !注[APIクローラー](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configure-an-api-crawler.html#UUID-9f83886b-170b-9187-f299-7654aa1e4542_section-idm4601236874884833662956419681 "Configure a document extractor") ソースを使ったJSONPathドキュメントエクストラを使うことができます。

JSONPathを使って属性を抽出するには、以下の設定を使用します。

Settings

概要

タグ

Source Settings > Tags Definitionsで定義したエンティティベースのタグです。

局所的

この文書が複数のロケ地で利用可能かどうか。この属性はドメインが複数のロケートを持つ場合にのみ表示されます。

Attribute

値を抽出したい属性。ドメイン設定時に定義された属性からAdministration > Domain Settingsセクションを選択します。例えば、各インデックスドキュメントのタイトルを抽出するルールを定義するためにtitle属性を選択します。

価値タイプ

設定したいルールの種類。以下は以下の通りです:Fixed - この属性を持つすべてのドキュメントに固定値を追加できます。Expressions - SelectorsにJSONPath式を入力できます。

セレクター

Sitecore Search文書に属性タグを追加するときに使うルールです。これは、ドロップダウンメニューの「Value」タイプの「Expressions」を選択すると確認できます。JSONPath EXPRESSIONと、オプションでDEFAULT TO値を追加してください。属性に対して複数のセレクタを定義できます。これは、ソースコンテンツに異なるコンテンツ配置がある場合に役立ちます。複数のセレクタがある場合、Searchトップからセレクターを実行し、セレクタが属性値を返すまで実行します。例えば、description属性を抽出したい場合。content itemsには、このJSONPath式を使う必要があるかもしれません:..プレースホルダー\['headless-main'\]..フィールド。Description.value他のcontent itemsについては、このJSONPath式を使う必要があるかもしれません:..placeholders\['headless-main'\]..フィールド。Text.value

## CSSドキュメントエクストラクタの使用

CSSクエリで属性値を抽出したい場合、CSSドキュメントエクストラクターを使いましょう。XPathで抽出できるHTMLタグとは異なり、CSSタグはページソースには表示されません。例えば、タイトルや画像はCSSタグ内に含まれることがあります。

> !注高度なウェブクローラーソースを組み合わせたCSSドキュメントエクストラクターを使うことができます。

CSS表現を使って属性を抽出するには、以下の設定を使用します。

舞台設定

概要

タグ

Source Settings > Tags Definitionsで定義したエンティティベースのタグです。

局所的

この文書が複数のロケ地で利用可能かどうか。この属性はドメインが複数のロケートを持つ場合にのみ表示されます。

Attribute

値を抽出したい属性。ドメイン設定時に定義した属性からAdministration > Domain Settingsセクションから選択してください。

価値タイプ

設定したいルールの種類。以下を使えます:Fixed - この属性を持つすべての文書に固定された数値を追加します。Expressions - 属性値を抽出するための式を入力できます。

セレクター

Sitecore Search文書に属性タグを追加するときに使うルールです。これは、ドロップダウンメニューの「Value」タイプで「Expressions」を選択すると確認できます。CSS式とデフォルトTO値を追加してください。例えば、属性に対して複数のセレクタを定義できます。これは、ソースコンテンツの配置が異なる場合に役立ちます。