---
title: "JavaScriptドキュメントエクストラクタを作成する"
slug: "create-a-javascript-document-extractor"
abstract: "Sitecore Searchクローラーソースでドキュメントエクストラクタを作成する際、JavaScriptを使って属性値を抽出してください。タグ、ルール、URLマッチングを使いましょう。"
---
# JavaScriptドキュメントエクストラクタを作成する

属性値を抽出する関数を使ったJavaScriptドキュメントエクストラクタを作成します。このタイプのエクストラクタは、XPath式では不十分な複雑な状況で通常この方法で使われます。

> !注 [高度なウェブクローラー](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/configuring-document-extractors/configure-an-api-crawler.html#UUID-9f83886b-170b-9187-f299-7654aa1e4542_section-idm4601236874884833662956419681 "Configure a document extractor") ソースを組み合わせたJavaScriptドキュメントエクストリクタを使うことができます。

特定のGLOBパターンの条件に一致するURLから属性値を抽出するためにJavaScriptを使う方法:

1.  メニューバーで **「Sources**」をクリックし、作成したソースを選択します。
    
2.  **ソースSettings**ページで**、ドキュメント抽出器**の横に「**![pencil\_grey.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/pencil_grey.png)編集**」をクリックします。
    
3.  [ドキュメントエクストラクター](urn:resource:component:1008083)を作成するには、**ドキュメントエクストラクター**のページで:
    
    -   **名前**欄に抽出器の意味のある名前を入力します。
        
        例えば、*住宅ローンのJS抽出器*に入ります。
        
    -   **Extractor Type**のドロップダウンメニューで**、JS**をクリックします。
        
    -   オプションとして、このエクストラクタのロジックが特定のパターン[に一致するURL](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/configuring-document-extractors.html#UUID-f9b686c5-2e0d-dee3-93fc-9d567475afee_section-idm4597072673881633832915676016 "URLs to match")にのみ適用されるようにするために、**URLを「Match**」に設定してください。これを行うには、「**URLs To Match**」フィールドで「**Add Matcher**」をクリックし![Plus\_add\_\_grey.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/Plus_add__grey.png) 「Add Matcher」をクリックし、使いたい式の**タイプ**を選択し、その式の**値を**入力してください。
        
        例えば、この形式の*/homeloans/*ですべてのURLをクロールするには、**TYPE**ドロップダウンメニューの**Glob Expression**をクリックし、**VALUE**を\*\*/homeloans/\*\*.\*として入力できます。
        
4.  **タグセクション**で、最初の[タグ](https://doc.sitecore.com/search/ja/users/search-user-guide/index-items/additional-configurations-and-settings/crawler-tags.html "Crawler tags")の横にある**「編集**![pencil\_grey.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/pencil_grey.png)」をクリックします。通常は*コンテンツ*タグです。
    
    タグエディターには、*説明*、*名前*、*タイプ*、*image\_url**、URL*属性を返すサンプルJavaScript関数が見られます。Search設定の助けとしてこのサンプルを提供しています。
    
    > !注ドキュメントエクストラクターでは、それぞれがユニークなタグにリンクされた複数のタグガーを作成できます。
    > 
    > 例えば、5つの属性の抽出方法を定義するJavaScript関数を持つタグ付け器が1つある場合、各ドキュメントに*5つの*属性を持つ*1つのインデックス*文書セットが得られます。しかし、タグ付けが3つで、それぞれに1つの属性を定義するJavaScript関数がある場合、各ドキュメントに*1つの*属性を持つ*3*つのインデックスドキュメントセットができます。
    
5.  タグエディターでサンプル関数を編集するか、新しいJavaScript関数を貼り付けて属性値を返します。
    
    > !注関数は[Cheerio](https://cheerio.js.org/)構文を使用し、オブジェクトの配列を返さなければなりません。
    
    例えば、ペーストを貼り付けます:
    
    function extract(request, response) {
     $ = response.body;
     curr\_url = request.url;
    
     let url = request.url;
     let type, subtype;
     type = 'homes';
    
     if (url.includes('/moving/')) {
     subtype = 'Moving';
     } else if (url.includes('/plans-products/')) {
     subtype = 'Plans and products';
     } else if (url.includes('/partnerships/')) {
     subtype = 'Partnerships';
     } else if (url.includes('/referrals/')) {
     subtype = 'Referrals';
     } else {
     subtype = 'misc';
     }
    
     let name, subtitle, description, image, date, year;
    
     name = $('h1class="main-title"').text() !== null ? $('h1class="main-title"').text().replace(/\\s\\s+/g, ' ').trim() : '';
     subtitle = $('h2class="htmlSubtitle"').text() !== null ? $('h2class="htmlSubtitle"').text().replace(/\\s\\s+/g, ' ').trim() : '';
     description = $('divclass="bodycopy"').text() !== null ? $('divclass="bodycopy"').text().replace(/\\s\\s+/g, ' ').trim() : '';
     image = $('divclass="hero-img"').find('img').attr('src') !== null ? 'https://www.txu.com' + $('divclass="hero-img"').find('img').attr('src') : '';
    
     return {
     'name': name,
     'subtitle': subtitle,
     'description': description,
     'image\_url': image,
     'type': type,
     'subtype': subtype,
     'url': url
     };
    }
    
    この関数は以下のロジックを使って属性を取得します:
    
    -   type - 固定価値、例えば *住宅*を用いる。
    -   subtype - URLパスに応じて5つの値を取ることができる変数。
    -   url - これを取って request.url。
    -   name - <h1 class="main-title"> タグのテキストに値がある場合、そのテキストの修正形を *Name*として使います。空の場合は空文字列を *Name*に使います。
    -   subtitle - <h2 class="htmlSubtitle"> タグのテキストに値がある場合、そのテキストの修正形を *Name*として使います。空の場合は空文字列を *Name*に使います。
    -   description - <bodycopy>\`\`<div> クラスのテキストに値がある場合、そのテキストの修正形を *Description*として使用します。空の場合は空文字列を *Description*に使います。
    -   image\_url\- hero-img\`\`divクラスのimg src属性に値がある場合は、そのURLの修正形を使用します。空の場合は空文字列を使い*Image\_url*。
6.  タグエディターで「 **保存**」をクリックします。
    
7.  オプションで、別のタグの属性を抽出するには「**タグ付け![Plus\_add\_\_grey.png](https://doc.sitecore.com/api/markdown-image/search/ja/users/search-user-guide/images/Plus_add__grey.png)追加**」をクリックし、**タグ**のドロップダウンメニューでタグをクリックしてステップ5と6を繰り返します。
    
8.  **ドキュメント抽出器**のページで、**保存**をクリックします。