---
title: "PDF用の構成"
slug: "configure-for-pdfs"
abstract: "Sitecore Searchを使ってPDFコンテンツをインデックスする方法について説明し、ソース設定を設定する際に注意すべき点も含まれます。"
---
# PDF用の構成

Sitecore Search PDFを [インデックス化](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items.html "Index items") し、検索結果に表示させることができます。ソースをインデックスHTMLまたはJSONコンテンツに設定するのと同様に、PDFコンテンツをインデックスすると、各PDFは *タイトル*、*説明*、*URL*などの属性を持つインデックスドキュメントになります。

Sitecore Search[ドキュメント抽出器](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configuring-document-extractors.html "Configuring document extractors") はHTMLまたは[JSON](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configure-an-api-crawler.html "Configure an API crawler")しか解析できません。PDFコンテンツから属性値を効果的に抽出するには、PDFのHTML構造を理解する必要があります。

ブラウザのHTMLページとは異なり、PDFのソースを直接確認・閲覧することはできません。しかし、[PDFのHTML構造を表示するために一時的なSearchソースを設定する](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configure-for-pdfs/extract-html-from-a-pdf.html "Extract HTML from a PDF")ことは可能です。このソースが *一時* 的と呼ばれているのは、PDFのHTML構造を表示する唯一の目的だからです。このソースのインデックス文書を使って検索体験を作成するわけではありません。

> !重要PDFのHTML構造を見るには、外部ツールではなくSearchソースを使いましょう。外部コンバーターは構文のバリエーションを持つHTMLを生成し、予期せぬ属性値の生成につながることがあります。

PDFのHTML構造を理解したら、PDFコンテンツのインデックス作成を [設定](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configure-an-advanced-web-crawler.html "Configure an advanced web crawler") できます。

> !注PDFコンテンツのインデックスには高度なウェブクローラーソースの使用を推奨します。なぜなら、通常はJavaScriptドキュメントエクストラクタが提供する論理的なパワーが必要になるからです。

## ドキュメント抽出器とインデックス作成PDFについて

HTMLコンテンツをインデックスするのと同様に、PDFコンテンツの抽出にはあらゆる種類のドキュメントエクストラクターを使うことができます。しかし、PDFには通常[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") クターを使います。なぜなら、テキストのサニティ化や条件の適用など複雑なユースケースをサポートするからです。

PDFコンテンツ用にドキュメントエクストラクターを設定する際は、以下の点を念頭に置いてください。

-   定義した抽出ルールがPDFにのみ適用され、HTMLなどの他のコンテンツには適用されないようにするために、URLを[Matchに](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configuring-document-extractors.html#UUID-f9b686c5-2e0d-dee3-93fc-9d567475afee_section-idm4597072673881633832915676016 "URLs to match")設定してください。これにより、クローラーは定義されたパターンに合致するURLにのみルールを適用します。
    
    通常、GLOB式 \*\*/\*.pdfは再帰的に探索するため十分です。
    
-   すべてのPDFがそのようにマークされるようにするために、*type*属性を*pdf*の固定値に設定することをお勧めします。
    
-   *タイトル*、*説明*、*URL*、*parent\_url*などの他の属性を抽出するには、[一時的なソース](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/configure-for-pdfs/extract-html-from-a-pdf.html "Extract HTML from a PDF")から抽出したPDFのHTML構造を使いましょう。
    

そのために、[いくつかのサンプル](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configuring-document-extractors/pdf-content.html "PDF content") 文書抽出器を作成しました。

## PDFインデックス作成のためのクローラー設定

[クローラーの設定](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configure-crawler-settings.html "Configure crawler settings") は、クローラーの範囲と動作を定義します。クローラー設定では、URLからどれだけのリンクをたどるか、URLを避けるか、各URLに渡すべきヘッダー情報などを定義します。

PDF文書をインデックスする際は、少なくとも以下の設定を確認することをお勧めします。

-   **Max Depth** - ハイパーリンクをたどってPDF URLを見つけたい場合は、**最大深度** が *少なくとも1*であることを確認しましょう。 **最大深度** が*0*の場合、クローラーはPDF URLを含むいかなるハイパーリンクも追跡しません。
    
    > !注トリガーがPDF URLを含むサイトマップやサイトマップインデックスであれば、デフォルトの**MAX DEPTH**を *デフォルトの0*のままにしてください。
    
-   **Allowed Domains** - 許可ドメインを指定し、PDFがHTMLページとは異なるドメインでホストされている場合、PDFを含むドメインを追加してください。例えば、HTMLページが*[www.bank.com](http://www.bank.com)*でPDFが*wwwbank.hostingservice.net*にある場合、許可ドメインとして*追加 wwwbank.hostingservice.net*。
    

## Requestエクストラクターとインデックス作成PDFについて

通常、[トリガーは](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configure-triggers.html "Configure triggers") クローラーの出発点を提供します。しかし、トリガーがPDFをカバーしない場合は、追加のリクエストを作成するために [リクエストエクストラクター](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/request-extractors.html "Request extractors") を使う必要があります。

> !注リクエストエクストラクターが動作するように、**MAX DEPTH**を少なくとも*1*に設定してください。

例えば、トリガーがすべてのHTMLおよびPDF URLを含む*Sitemap*であれば、リクエストエクストラクターの設定は不要です。しかし、トリガーがHTMLページのみの*Sitemap*で、これらのHTMLページ内にPDF個のURLが隠されている場合は、クローラー用のPDF URLを生成するリクエストエクストラクターを作成してください。

以下は、ページ内のPDF URLのみを取得するためのJavaScriptリクエストエクストラクターのサンプルです:

function extract(request, response) {
 const $ = response.body;
 const regex = /.\*\\.pdf(?:\\?.\*)?$/;
 return $('a')
 .toArray()
 .map((a) => $(a).attr('href'))
 .filter((url) => regex.test(url))
 .map((url) => ({ url }));
}

## Attributes PDFのインデックス作成に特化しています

Sitecore Search PDFのインデックス作成に追加の属性は必要ありません。しかし、検索結果の整理や提示の仕方を改善するカスタム属性を作成することは可能です。

例えば、PDFが属する親ページを追跡したい場合は、オプションで*parent\_url*という[タイプの文字列の属性を作成・公開](https://doc.sitecore.com/search/ja/users/search-user-guide/configure-entities/add-an-attribute.html "Add an attribute")できます。その後、ドキュメントエクストラクタを設定してこの属性の[値を抽出](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/configure-indexing/pdf-content.html#UUID-d946231d-67cf-06d0-df53-225d3cce3400_section-idm4635164294537633927176892424 "Sample 2: Complex JavaScript extractor to get attribute values from PDF content")する必要があります。

*parent\_url*属性は、PDF URLがホストされているページのURLと異なる見た目の場合に有用です。例えば、ページ*[https://www.bank.com/legal/](https://www.bank.com/legal/)* には*[https://wwwbank.hostingservice.net/february-2023--global.pdf?md=20230215T151008Z](https://wwwbank.hostingservice.net/february-2023--global.pdf?md=20230215T151008Z)* .のようなURLのPDFが含まれており、これは別のドメインに属しています。

*parent\_url*属性には以下の設定をご利用ください:

-   **エンティティ** - *Content*、またはあなたが望む他のエンティティ。
-   **表示名** - *Parent URL*、または類似の名称。
-   **Attribute 名前** - *parent\_url*、またはそれに似た名前。
-   **配置** - *Standard*。
-   **データ型** - *String*。