チュートリアル: Azure Cognitive Search の設定

Current version: 10.1
注意

Azure Cognitive Search は将来的に廃止され、Sitecore では今後のリリースでこのサービスのサポートを終了する予定です。

Sitecore で Azure Search を使用するには、最初に Sitecore インスタンスで Azure Search サービスを設定する必要があります。これは、このチュートリアルの手順に従って行います。

接続文字列のフォーマット

Cloud Search のデフォルトの接続文字列名は cloud.search であり、次の情報が含まれています。

  • serviceUrl – Search サービス API の HTTPS URL (#https://dk-test.search.windows.net など)。

  • apiVersion – 2017-11-11 など、日付形式に従います (各 API バージョンの詳細を参照してください)。

  • apiKey – Azure 管理ポータルから取得するサービスの管理キー。

注記

Sitecore バージョン 9.1 以降の場合は、API のバージョンを 2017-11-11 に設定します。サポートされている他のバージョンについては、「Azure Search の互換性表」を参照してください。

接続文字列のフォーマットは以下のとおりです。

RequestResponse
<add name="cloud.search" connectionString="serviceUrl=<url>;apiVersion=<apiVersion>;apiKey=<apiKey>" /> 
注記

xConnect 対応の Azure Cognitive Search は、この機能をサポートしていません。

Geo レプリケーションのシナリオ

Sitecore は、Geo レプリケーションのシナリオでの Search サービスをサポートしています。このタイプのシナリオを使用するには、次の手順に従います。

  1. 2 つ以上の Search サービス インスタンスを作成します。

  2. パイプ区切り文字 (|) を使用して接続文字列を追加します。たとえば、2 つの Search サービス ( searchservice1 および searchservice2) があり、Geo レプリケーションのシナリオで使用する場合は、次の接続文字列を使用する必要があります。

    RequestResponse
    <add name="cloud.search" 
    connectionString="serviceUrl=https://searchservice1.search.windows.net;apiVersion=2015-02-28;apiKey=AdminKey1|serviceUrl=https://searchservice2.search.windows.net;apiVersion=2015-02-28;apiKey=AdminKey2" /> 

高度なスケーリング シナリオ

高度なスケーリング シナリオでは、インデックス専用の Search サービスを使用することをお勧めします。設定するには、次の手順に従います。

  1. 新しい接続文字列を追加します (cloud.search.analytics など)。

  2. 次の接続文字列名を使用して、対応するインデックスを設定します。

接続文字列名

Azure を検索プロバイダーとして指定する

デフォルトでは、Sitecore は Solr 検索プロバイダーを有効にした状態で配布されます。 

  • Azure Search プロバイダーを使用するには、web.config ファイルで、検索プロバイダーとして Azure を指定します

インデックスを再構築する

Sitecore の完全な機能を確保するため、インデックスを再構築する必要があります。

インデックスを再構築するには:

  1. Sitecore のログイン ページ (http:// {your_instance}/sitecore/login) にアクセスし、管理者の資格情報を使用してログインします。

  2. Sitecore スタート画面で、[コントロール パネル] をクリックし、[インデックス マネージャー] をクリックします。

  3. すべてのインデックスを選択して再構築するには、[インデックス マネージャー] ページで [すべて選択]、[再構築] の順にクリックします。

    注記

    インデックスの再構築は時間のかかる操作であり、15 分以上かかる場合があります。

    インデックスが再構築されると、Sitecore の検索インデックスが Azure ポータルの [Search サービス] ウィンドウに表示されます。

    [インデックス マネージャー] ページ

Azure フィールドのタイプをマップする

.Net と Sitecore の間で、さまざまなタイプのマッピングを定義する方法を確認するには、App_Config\Sitecore\ContentSearch.Azure\Sitecore.ContentSearch.Azure.DefaultIndexConfiguration.config ファイルの sitecore\contentsearch\indexConfigurations\defaultCloudIndexConfiguration\CloudTypeMapper ノードにアクセスします。

注記

次のように、すべてのカスタム フィールドについてマップ要素を定義する必要があります。

RequestResponse
<map type="<Field type>" cloudType="<Edm type from list of supported types>" />

Azure Search は、次の Entity Data Model (EDM) のフィールド タイプを使用します。フィールド タイプを正しくマップするには、次の表を参照してください。

フィールド タイプ

説明

Edm.String

オプション: 単語の区切りやステミングなど、全文検索用にトークン化できるテキスト。

Collection(Edm.String)

全文検索用にトークン化できる文字列のリスト。コレクション内のアイテム数に上限はありませんが、ペイロード サイズの上限である 16 MB がコレクションに適用されることに注意してください。

Edm.Boolean

true または false 値が含まれます。

Edm.Int32

32 ビット整数値が含まれます。

Edm.Int64

64 ビット整数値が含まれます。

Edm.Double

倍精度の数値データを使用します。

Edm.DateTimeOffset

日付と時刻の値は、OData V4 形式で表されます。次に例を示します。

yyyy-MM-ddTHH:mm:ss.fffZ

yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm.

注記

DateTime フィールドの精度はミリ秒単位に制限されています。サブミリ秒の精度を持つ DateTime 値をアップロードした場合、戻り値はミリ秒単位に切り上げられます。次に例を示します。

2015-04-15T10:30:09.7552052Z は、次のように返されます。

2015-04-15T10:30:09.7550000Z

.Net と Sitecore の間で、さまざまなタイプのマッピングを定義する方法を確認するには、App_Config\Sitecore\ContentSearch.Azure\Sitecore.ContentSearch.Azure.DefaultIndexConfiguration.config ファイルの sitecore\contentsearch\indexConfigurations\defaultCloudIndexConfiguration\CloudTypeMapper ノードにアクセスします。

注記

次のように、すべてのカスタム フィールドについてマップ要素を定義する必要があります。

RequestResponse
<map type="<Field type>" cloudType="<Edm type from list of supported types>" />

フィールドをマップする

コンポーネントが使用するすべてのフィールドをインデックス設定セクションにリストする場合は、次のようにリストすることをお勧めします。

  • sitecore\contentSearch\configuration\indexes\index\configuration\fieldMap

次の表に、サポートされている属性を示します。

属性

説明

boost

あるフィールドに別のフィールドよりも高い重要度を与えるために使用します。

cloudAnalyzer

検索操作とインデックス作成操作の両方に対してアナライザーを設定するために使用します。

注記

searchAnalyzer および indexAnalyzer 属性を使用している場合は、単一の cloudAnalyzer 属性を置き換えるペアとして指定する必要があります。

cloudFieldName

Cloud で定義されているフィールド名。文字、数字、およびアンダースコアのみを含めることができます。

注記

最初の文字は文字でなければなりません。

fieldName

Solr で定義されているフィールドの名前。

format

この属性は、DateTime タイプのフィールドに対して設定する必要があります。サポートされている値は、yyyy-MM-ddTHH:mm:ss.fffZ. です。

 indexAnalyzer

インデックス作成操作に対してアナライザーを設定するために使用します。

注記

この属性を使用する場合、searchAnalyzer および indexAnalyzer 属性は、単一の cloudAnalyzer 属性を置き換えるペアとして指定する必要があります。

searchAnalyzer

検索操作に対してアナライザーを設定するために使用します。

注記

この属性を使用する場合、searchAnalyzer および indexAnalyzer 属性は、単一の cloudAnalyzer 属性を置き換えるペアとして指定する必要があります。

settingType

settingTypeプロパティは、Sitecore.ContentSearch.Azure.CloudSearchFieldConfiguration, Sitecore.ContentSearch.Azure のようにする必要があります。

Azure Search のサポート

クエリ サポートとファセット サポートを正しく設定する必要があります。Azure Search のサポートを設定するには、 Azure Search のサポート リファレンスを使用します。

HTTP 接続を開く数を設定する

次の設定を使用することで、Azure Search プロバイダーが使用する接続数を管理することができます。

RequestResponse
<setting name="ContentSearch.Azure.ServicePoint.ConnectionLimit" value="100" />

次のシナリオでは、設定値を調整する必要があります。

  • HTTP を多用する他のアプリケーションがある場合は、値を減らす必要があります。

  • アプリケーションに高い負荷がかかっている場合は、新しい接続の作成に時間がかかったり、作成に失敗したりします。これは、超過制限の設定が低すぎるためです。このような場合は、値を増やす必要があります。

トークン アナライザーを設定する

トークン アナライザーは、Azure Search Analyzer API のサポートを追加することにより、テキストをトークンに分割します。検索クエリにハイフン (「-」) などの非ラテン文字が含まれている場合、テキストは 2 つのトークンに分割されます。たとえば、test-index というクエリを使って Name フィールドを検索すると、フィールドに言語アナライザーが含まれているかどうかに関係なく、クエリ内のテキストは 2 つのトークン (test および index) にトークン化されます。

クエリ結果は、構成されているアナライザーによって異なります。フィールドにアナライザーが含まれていない場合、要求の送信には ContentSearch.Azure.DefaultTokenAnalyzer が使用されます。

次の設定を使用して、アナライザーを構成します。

設定

説明

ContentSearch.Azure.UseTokenAnalyzer

API を分析するための要求を送信するかどうかを制御します。この設定は、使用する環境のパフォーマンスに影響を与える可能性があります。ただし、無効にすることもできます。設定が無効になっている場合、または Analyze API からの応答がエラーを返した場合、テキストは次の記号をはじめとするトークンで分割されます。

「 」(スペース)

-

#

@

.

,

`

~

!

$

%

^

&

(

)

<

>

+

/

ContentSearch.Azure.DefaultTokenAnalyzer

これを使用して、API を分析するための要求を送信するデフォルトのアナライザーを指定します。特に指定しない限り、デフォルトで標準の Lucene アナライザーを使用して要求が送信されます。

ContentSearch.Azure.TokenCacheSlidingExpiration

アイテムをキャッシュに保持する期間を制御します。すべての Analyze API 要求は、Analyze API の結果をキャッシュに保存する環境のパフォーマンスに影響を与えるため、この設定は重要です。

ホワイトリストによってフィールドを制御する

インデックス スキーマに含めるフィールドは、ホワイトリストを使用して制御します。

Azure Search のホワイトリストを設定するには:

  1. \App_Config\Sitecore\ContentSearch.Azure\ Sitecore.ContentSearch.Azure.DefaultIndexConfiguration.config 設定ファイルで、indexAllFields 設定の値を false に設定します。

  2. 設定ファイルで、設定セクションのリストに含めることが推奨される最小限のフィールドを追加します。推奨される最小限のフィールドのリストは次のとおりです。

    RequestResponse
    <include hint="list:AddIncludedField">
      <__Boost>{93D1B217-B8F4-462E-BABF-68298C9CE667}</__Boost>
      <__Bucketable>{C9283D9E-7C29-4419-9C28-5A5C8FF53E84}</__Bucketable>
      <__Created_By>{5DD74568-4D4B-44C1-B513-0AF5F4CDA34F}</__Created_By>
      <__Enable_Item_Fallback>{FD4E2050-186C-4375-8B99-E8A85DD7436E}
      </__Enable_Item_Fallback>
      <__Hidden>{39C4902E-9960-4469-AEEF-E878E9C8218F}</__Hidden>
      <__Icon>{06D5295C-ED2F-4A54-9BF2-26228D113318}</__Icon>
      <__Is_Bucket>{D312103C-B36C-4CA5-864A-C85F9ABDA503}</__Is_Bucket>
      <__Semantics>{A14F1B0C-4384-49EC-8790-28A440F3670C}</__Semantics>
      <Date_Range>{7146F1A4-45FB-4CEC-9855-C95E9E595827}</Date_Range>
      <Extension>{C06867FE-9A43-4C7D-B739-48780492D06F}</Extension>
      <Facets_Location>{96ABAC42-67D6-46E0-91A9-8F46FF9EAC25}</Facets_Location>
      <Facets_Template>{154DC6DA-89C4-4704-8CDA-95994D794BEA}</Facets_Template>
      <File_Size>{E344C026-8575-496D-8CDF-7741891D0786}</File_Size>
      <ID>{5A531AF0-C44C-4141-A0D3-09C5CDC3D654}</ID>
      <Image_Dimensions>{05EF282C-54DE-49B5-9EF3-0EB3008080C6}</Image_Dimensions>
      <Language>{BC06ED64-C4A1-4EE2-9835-541E1CC4CCC9}</Language>
      <Mime_Type>{6F47A0A5-9C94-4B48-ABEB-42D38DEF6054}</Mime_Type>
      <Parent_ID>{1F4412CC-609C-4D3C-AF8C-D5C849202916}</Parent_ID>
      <Search_Types_Location>{A34F2EFE-CF7A-4BF3-86DC-589B33C1B236}</Search_Types_Location>
      <Search_Types_Template>{473454F9-5184-4BDD-9A04-0F567641407A}</Search_Types_Template>
      <Sitecore_Items>{BBDD760F-6C5F-467A-83B4-095CC9CFC2DF}</Sitecore_Items>
      <Size>{6954B7C7-2487-423F-8600-436CB3B6DC0E}</Size>
      <Table_View>{68DA2D37-ABC0-4001-BF01-A3FC8D2F1BF9}</Table_View>
      <Tag>{FE6DB0A6-09BD-4FEB-8D82-0F1C14183E18}</Tag>
      <Tags>{56EF9816-35AD-4160-B5DC-ECA7FE7DCFC2}</Tags>
      <Text>{A60ACD61-A6DB-4182-8329-C957982CEC74}</Text>
      <Title>{75577384-3C97-45DA-A847-81B00500E250}</Title>
      <Search_Types_Text>{E600C190-3F61-4776-B2F5-03AD7AEB351C}</Search_Types_Text>
      <Updated_Date>{87A830FB-4E2F-4F76-896B-F20CFA2374DD}</Updated_Date>
      <Workflow_State>{49D86313-493D-4054-ACC9-D68AD6B09332}</Workflow_State>
    </include>
  3. インデックス作成の対象とするフィールドによって、設定セクションを拡張します。

Do you have some feedback for us?

If you have suggestions for improving this article,