用語に対する適切なシノニムは、ビジネスシナリオによって変化する可能性があります。組み込みの辞書には特定のシノニムが欠けていたり、不適切なシノニムが提案されたりすることもあります。この問題に対処するため、OpenSearch では介入機能を使用してシノニムをカスタマイズできます。
シノニム介入辞書を作成し、クエリ分析ルールに適用することで、シノニムの動作をカスタマイズできます。
概要
シノニム介入辞書は、クエリ分析におけるデフォルトのシノニム機能にカスタムルールを追加します。このプロセスには、辞書の作成、エントリの追加、ルールへの適用、そして結果のテストが含まれます。
-
シノニム介入辞書の作成:
検索アルゴリズムセンター > 検索設定 > 辞書管理に移動します。クエリ分析の介入辞書ページで、右上隅の [作成] をクリックします。辞書タイプを選択し、名前を入力すると、介入辞書が作成され、辞書リストに表示されます。 -
介入エントリの追加と管理:辞書が作成されたら、リストからその辞書を見つけ、名前をクリックするか、[エントリ管理] をクリックして詳細ページを開きます。
検索クエリに対して、2種類の介入を使用できます:
-
シノニムの追加:特定の検索クエリに対して、1つ以上のシノニムを追加できます。これにより、システムは元の検索クエリまたは追加されたシノニムのいずれかを含む結果を返します。
-
シノニムのブロック:特定の検索クエリに対して、既存のシノニムを1つ以上ブロックできます。これにより、システムはブロックされたシノニムを含む結果を返さなくなります。
-
介入辞書の使用:シノニム介入辞書を作成し、内容を入力した後、任意のアプリケーションのクエリ分析ルールでその辞書を選択できます。
-
介入辞書のテストとデプロイ:介入辞書をクエリ分析ルールに適用した後、本番環境にデプロイする前に検索テストを実行し、結果が期待どおりであることを確認します。
-
エントリが有効になる仕組み
-
介入エントリは、検索クエリ内のストップワードを除いた連続する1つ以上のセマンティックターム (最大5つ) が、介入エントリのクエリと一致した場合に有効になります。
-
シノニム介入が有効になる例:検索クエリが
dior aj co-branded low-top shoesで、介入エントリとしてdior->dior、aj->air jordan、co-branded->collaborationを設定している場合、3つの介入すべてが有効になります。これにより、「dior aj co-branded low-top shoes」、「dior air jordan co-branded low-top shoes」、「dior aj collaboration low-top shoes」、「dior air jordan collaboration low-top shoes」など、最大8つのクエリの組み合わせに一致する可能性があります。 -
一致度の重みが最も高いタームの介入エントリが優先されます。例えば、以下の介入エントリがあるとします:
pharyngitis -> sore throat, tonsillitis, inflammation, red throat、low-grade fever -> fever, high temperature、medicine -> traditional Chinese medicine, Western medicine, patent Chinese medicine。検索クエリが「what medicine is good for pharyngitis and a low-grade fever」であるとします。「pharyngitis」と「medicine」の重みが 7、「low-grade fever」の重みが 4 の場合、「pharyngitis」と「medicine」のシノニムは適用されますが、「low-grade fever」のシノニムは適用されません。 -
一致度の重みが同じ場合、検索クエリ内で最初に出現するタームの介入エントリが優先されます。例えば、介入エントリ
apple phone->iphoneとphone charger->power bankがあり、検索クエリがapple phone chargerの場合、介入apple phone->iphoneが有効になります。 -
一致する位置が同じ場合、より多くのセマンティックタームを持つエントリが優先されます。例えば、介入エントリ
phone charger->power bankとphone->mobile phoneがあり、検索クエリがwhich brand of phone charger is goodの場合、介入phone charger->power bankが有効になります。 -
ユーザー定義の介入は、組み込み辞書のシノニムよりも優先されます。ユーザー介入のターム範囲が、システム定義のシノニムのターム範囲と重複または包含関係にある場合に競合が発生します。例:
-
ユーザー介入の範囲がシステムの範囲を包含する場合:システムにシノニム
cabbage -> round cabbageがあるとします。fried cabbageの検索はfried AND (cabbage OR round cabbage)に展開されます。ユーザー介入fried cabbage -> stir-fried kaleを追加すると、クエリはfried cabbage OR stir-fried kaleに展開されます。システムのシノニムround cabbageは無視されます。 -
ユーザー介入の範囲がシステムの範囲に含まれる場合:システムにシノニム
apple phone -> iphoneがあるとします。apple phoneの検索はapple phone OR iphoneに展開されます。ユーザー介入phone -> mobile phoneを追加すると、apple phoneの検索はapple AND (phone OR mobile phone)に展開されます。
-
注:
-
生成されるクエリグループの数がシノニムの数を制限します。現在のクエリグループの上限は 36 です。
ウォークスルー
シナリオ:Eコマースのショッピングガイドサービスが、OpenSearch アプリケーションでシノニム機能を含むクエリ分析ルールを使用しています。本番環境で検索結果が不十分なケースを発見し、介入辞書が必要になりました。
失敗ケース:ユーザーが「apple」を検索しても、関連するプロダクトが返されません。これは、プロダクトはデータベースに存在するものの、その説明に apple の中国語である「苹果」というシノニムが使用されているためです。
診断:システムのシノニム辞書が、「苹果」を「apple」のシノニムとして認識できませんでした。
解決策:新しいシノニム介入辞書を作成し、「apple」というクエリに対して「苹果」というシノニムの介入を追加し、その辞書を本番環境で使用されているクエリ分析ルールに適用します。
操作手順:
-
コンソールで、[検索アルゴリズムセンター] > [検索設定] > [辞書管理] に移動し、[作成] をクリックします。
[クエリ分析辞書の作成] ダイアログボックスで、[名前] に dic_tong と入力し、[辞書タイプ] で [シノニム] を選択します。
2. 新しいシノニム介入辞書で、介入エントリを追加します。Query フィールドに「apple」と入力し、Add Synonym フィールドに「Apple Inc.」と入力します:
「ブロックシノニム」フィールドに pinguo を入力します。
3. クエリ分析ページで、作成したシノニム介入辞書を非本番環境のクエリ分析ルールに適用し、検索テストを実行します。
[ルールの追加] ダイアログボックスで、[シノニム] チェックボックスを選択します。[組み込み辞書] はデフォルトで選択されています。[介入辞書] ドロップダウンリストから、作成した辞書 (例:dic_tong) を選択し、[OK] をクリックします。
4. 検索機能をテストします。期待どおり、検索結果には「苹果」または「apple」を含む結果が返されます:
検索テストページで、実際の検索クエリは (((default:"apple") OR (default:"fuji apple"))) と表示されます。これにより、シノニム介入が apple を fuji apple に正常に展開し、検索結果が cate_name=fuji apple のプロダクトレコードを返すことが確認できます。
注意事項
-
辞書の作成後に、辞書タイプや名前を変更することはできません。
-
介入エントリを追加する際、クエリが介入リストに存在していてはなりません。既存のクエリについては、直接シノニムを追加、削除、または変更できます。
-
1つの検索クエリに対して複数のシノニムを追加またはブロックするには、シノニムをセミコロン (;) で区切ります。
-
新規または変更された介入エントリの同期ステータスが [同期中] のままである場合は、[更新] ボタンをクリックして最新の同期ステータスを取得してください。
-
1つの介入辞書は、複数のクエリ分析ルールで使用できます。
-
介入辞書は組み込み辞書を補完するものです。そのため、介入辞書を使用する場合、組み込み辞書を使用するオプションがデフォルトで選択されます。
-
ルールがオンラインであるかどうかにかかわらず、クエリ分析ルールで使用中の介入辞書を削除することはできません。辞書を削除するには、まず関連するすべてのルールからその辞書を削除する必要があります。
制限事項
-
作成できるシノニム介入辞書の最大数は 20 です。
-
介入エントリを追加する際、指定できるクエリは1つだけです。そのクエリに対して追加およびブロックできるシノニムの合計数は 5 を超えることはできません。
-
各シノニム介入辞書には、最大 1,000 件の介入エントリを含めることができます。
-
シノニム介入エントリは、分析後のタームに一致することで有効になります。例えば、クエリ「Beijing」のシノニムとして「capital」を追加すると、「Beijing」の検索で「Beijing」または「capital」を含む結果が返されます。「welcome to Beijing」の検索では、「welcome to Beijing」または「welcome to capital」を含む結果が返されます。
-
介入エントリを追加する際、クエリ内の英字はすべて小文字にする必要があります。
-
関連する SDK の詳細については、「介入エントリの変更を受け取る」をご参照ください。
-
シノニム介入エントリを一括で追加するには、次の例の JSON フォーマットを使用します。
[{"cmd":"add","word":"hey","alias":["hei","hei2"],"antiAlias":["hi"]}]
旧コンソールの既存ユーザーの場合は、次のフォーマットを使用してください:
[{"cmd":"add","word":"hey","alias":["hei","hei2"],"anti_alias":["hi"]}]