Azure Search のシノニム (プレビュー)

検索エンジンのシノニムは、ユーザーが実際に用語を提供する必要がなく、クエリのスコープを暗黙的に拡張する同等の用語を関連付けます。 たとえば、用語 "dog" と、"canine" と "puppy" のシノニムの関連付けを指定すると、"dog"、"canine"、または "puppy" を含むすべてのドキュメントがクエリのスコープ内に収まります。

Azure Search では、シノニムの拡張は、クエリ時に行われます。 既存の処理を停止させることなく、シノニム マップをサービスに追加できます。 インデックスを再構築する必要なく、synonymMaps プロパティをフィールド定義に追加できます。 詳細については、インデックスの更新に関するページをご覧ください。

使用可能な機能

シノニム機能は現在プレビューで、最新のプレビュー api-version (api-version=2016-09-01-Preview) でのみサポートされています。 現時点で Azure Portal のサポートはありません。 API バージョンは要求で指定するため、同じアプリで一般公開 (GA) API とプレビュー API を組み合わせることができます。 ただし、プレビュー API は SLA の対象ではなく、機能が変更される場合があるため、実稼働アプリケーションでの使用はお勧めしません。

Azure search でシノニムを使用する方法

Azure Search のシノニムのサポートは、シノニム マップに基づき、これを定義して、サービスにアップロードします。 これらのマップは独立したリソース (インデックスやデータ ソースなど) を構成し、検索サービスで、任意のインデックスの任意の検索可能フィールドで使用できます。

シノニム マップとインデックスは独立して保持されます。 シノニム マップを定義して、サービスにアップロードしたら、フィールド定義に synonymMaps という新しいプロパティを追加することによって、フィールドでシノニム機能を有効にできます。 シノニム マップの作成、更新、および削除は、常にドキュメント全体の操作になります。つまり、シノニム マップの一部を段階的に作成、更新、または削除することはできません。 1 つのエントリの更新でも、再読み込みが必要になります。

検索アプリケーションにシノニムを組み込むことは、2 段階のプロセスです。

  1. 次の API によって、検索サービスにシノニム マップを追加します。

  2. インデックス定義でシノニム マップを使用するように、検索可能フィールドを構成します。

SynonymMaps リソース API

POST または PUT を使用して、サービスでシノニム マップを追加または更新します。

シノニム マップは、POST または PUT を使用してサービスにアップロードします。 各規則は、改行文字 ('\n') で区切る必要があります。 無料サービスでシノニム マップあたり最大 5,000 規則、およびその他のすべての SKU で 10,000 規則を定義できます。 各規則には、最大 20 個の拡張を設定できます。

このプレビューでは、シノニム マップは、次に説明する Apache Solr 形式である必要があります。 別の形式の既存のシノニム辞書があり、それを直接使用する場合は、UserVoice でお知らせください。

次の例のように、HTTP POST を使用して、新しいシノニム マップを作成できます。

POST https://[servicename].search.windows.net/synonymmaps?api-version=2016-09-01-Preview
api-key: [admin key]

{  
   "name":"mysynonymmap",
   "format":"solr",
   "synonyms": "
      USA, United States, United States of America\n
      Washington, Wash., WA => WA\n"
}

または、PUT を使用し、URI にシノニム マップ名を指定できます。 シノニム マップが存在しない場合、作成されます。

PUT https://[servicename].search.windows.net/synonymmaps/mysynonymmap?api-version=2016-09-01-Preview
api-key: [admin key]

{  
   "format":"solr",
   "synonyms": "
      USA, United States, United States of America\n
      Washington, Wash., WA => WA\n"
}
Apache Solr シノニム形式

Solr 形式は同等の明示的なシノニム マッピングをサポートします。 マッピング規則は、このドキュメントで説明している Apache Solr のオープン ソース シノニム フィルター仕様 SynonymFilter に準拠しています。 同等のシノニムのサンプル規則を以下に示します。

              USA, United States, United States of America

上の規則では、検索クエリ "USA" が "USA" または "United States" または "United States of America" に拡張されます。

明示的なマッピングは、"=>" 矢印で示します。 指定した場合、"=>" の左側に一致する検索クエリの用語のシーケンスが、右側の代替で置き換えられます。 次の規則を指定した場合、検索クエリ "Washington"、"Wash."、 または "WA" はすべて "WA" に書き換えられます。 明示的なマッピングは指定した方向でのみ適用され、この例では、クエリ "WA" が "Washington" に書き換えられることはありません。

              Washington, Wash., WA => WA

サービスのシノニム マップを一覧表示します。

GET https://[servicename].search.windows.net/synonymmaps?api-version=2016-09-01-Preview
api-key: [admin key]

サービスのシノニム マップを取得します。

GET https://[servicename].search.windows.net/synonymmaps/mysynonymmap?api-version=2016-09-01-Preview
api-key: [admin key]

サービスのシノニム マップを削除します。

DELETE https://[servicename].search.windows.net/synonymmaps/mysynonymmap?api-version=2016-09-01-Preview
api-key: [admin key]

インデックス定義でシノニム マップを使用するように、検索可能フィールドを構成します。

新しいフィールド プロパティ synonymMaps を使用して、検索可能フィールドに使用するシノニム マップを指定できます。 シノニム マップは、サービス レベル リソースであり、そのサービスに属するインデックスの任意のフィールドによって参照できます。

POST https://[servicename].search.windows.net/indexes?api-version=2016-09-01-Preview
api-key: [admin key]

{
   "name":"myindex",
   "fields":[
      {
         "name":"id",
         "type":"Edm.String",
         "key":true
      },
      {
         "name":"name",
         "type":"Edm.String",
         "searchable":true,
         "analyzer":"en.lucene",
         "synonymMaps":[
            "mysynonymmap"
         ]
      },
      {
         "name":"name_jp",
         "type":"Edm.String",
         "searchable":true,
         "analyzer":"ja.microsoft",
         "synonymMaps":[
            "japanesesynonymmap"
         ]
      }
   ]
}

synonymMaps は型 'Edm.String' または 'Collection(Edm.String)' の検索可能フィールドに指定できます。

メモ

このプレビューでは、フィールドあたり 1 つのシノニム マップのみを指定できます。 複数のシノニム マップを使用する必要がある場合は、UserVoice でお知らせください。

他の検索機能へのシノニムの影響

シノニム機能は、OR 演算子によって元のクエリをシノニムに書き換えます。 このため、検索結果の強調表示とスコアリング プロファイルは元の用語とシノニムを同等として処理します。

シノニム機能は、検索クエリに適用され、フィルターやファセットには適用されません。 同様に、検索候補は元の用語にのみ基づき、シノニムの一致は応答に示されません。

シノニムの拡張は、ワイルドカード検索語句には適用されません。プレフィックス、あいまい検索、および正規表現語句は拡張されません。

シノニム マップの構築のヒント

  • 簡潔で適切に設計されたシノニム マップは、網羅的な一致候補の一覧よりも効率的です。 過度に大規模または複雑な辞書は、解析に時間がかかり、クエリが多数のシノニムに拡張された場合に、クエリの待ち時間に影響を与えます。 使用される可能性のある用語を推測するのではなく、検索トラフィック分析レポートによって実際の用語を取得できます。

  • 準備と検証の両方の練習として、このレポートを有効にして使用し、シノニムの一致から利点が得られる用語を正確に判断して、シノニム マップで優れた結果を生成する検証としてそれを使い続けます。 事前定義済みのレポートで、タイル "よくある検索クエリ" や "結果なしの検索クエリ" によって必要な情報が得られます。

  • 検索アプリケーションでは、複数のシノニム マップを作成できます (アプリケーションで多言語の顧客ベースをサポートしている場合に言語別など)。 現在、フィールドではそれらのうちの 1 つしか使用できません。 フィールドの synonymMaps プロパティは、いつでも更新できます。

次のステップ

  • 開発 (非運用) 環境に既存のインデックスがある場合は、小さな辞書で実験して、シノニムの追加によって、スコアリング プロファイル、検索結果の強調表示、検索候補への影響など、検索操作がどのように変わるかを確認します。

  • 検索トラフィック分析を有効にし、事前定義済みの Power BI レポートを使用して、最も使われた用語と、ドキュメントを返さない用語を調べます。 これらの洞察を使用して、インデックスでドキュメントに解決する必要がある非生産的クエリのシノニムを含めるように辞書を変更します。