OpenSearch の組み込み辞書は、ほとんどのスペル修正を自動的に処理しますが、プロダクトコード、ブランド名、ドメイン固有の用語を認識できません。介入辞書を使用すると、これらのケースに対して組み込み辞書をオーバーライドするカスタム修正エントリを定義できます。これにより、manhatan のようなクエリが manhattan に修正されることを保証したり、組み込み辞書がプロダクトコードを誤って「修正」するのを防いだりできます。
仕組み
検索クエリが介入エントリにマッチすると、OpenSearch はそのエントリで定義された修正を適用し、それを保持します。その後、組み込み辞書はマッチしなかった残りの用語を処理します。
介入エントリに基づくスペル修正は信頼性が高いです。OpenSearch はまず介入エントリによる修正を適用して保持し、その後、クエリの未変更部分を組み込み辞書を使用して処理します。
例:
介入エントリ:
mobile phone changer -> mobile phone charger検索クエリ:
which mobile phone changer brad is good結果:介入エントリにより changer が charger に修正されます。組み込み辞書により brad が brand に修正されます。最終結果:which mobile phone charger brand is good。
介入エントリのタイプ
介入エントリには 2 つのタイプがあります。
| タイプ | 動作 |
|---|---|
| 追加 | OpenSearch は検索クエリを修正し、修正後のクエリに基づいて結果を取得します。 |
| ブロック | OpenSearch は検索クエリを修正せず、修正クエリに基づいて結果を取得しません。 |
組み込み辞書が、そのまま保持したい用語を誤って「修正」してしまう場合は、[ブロック] を使用します。例えば、組み込み辞書がプロダクトコード xr100 を xr1000 に変更してしまう場合、xr100 のブロックエントリを追加してその修正を防ぎます。
マッチングルール
複数の介入エントリが検索クエリに適用される可能性がある場合、OpenSearch は 3 つのルールを使用して競合を解決します。
ルール 1: 先に追加されたエントリが優先される
2 つのエントリに事前定義クエリが重複している場合、先に追加されたエントリが有効になります。
例:クエリ china constructing back、エントリ china constructing -> china construction と construction back -> construction bank。両方のエントリが部分的にマッチしますが、最初のエントリのみが適用されます。結果:china construction back。
ルール 2: より長い事前定義クエリが優先される
2 つのエントリが同じ開始用語を共有している場合、より長い事前定義クエリを持つエントリが優先されます。
例:クエリ opansearching is excellent、エントリ opan -> open と opansearching -> opensearch。より長いエントリが完全な用語にマッチします。結果:opensearch is excellent。
ルール 3: 複数のエントリが有効になる
包括的マッチモードでは、重複しない複数のエントリが、それぞれ同じクエリの異なる部分を修正できます。
注:介入エントリは、部分文字列マッチではなく包括的マッチを使用します。エントリは、クエリ内の連続した 1 つ以上の完全なセマンティックターム (最大 5 つ) がエントリの事前定義クエリにマッチした場合にのみ有効になります。
スペル修正辞書の作成
前提条件
開始する前に、以下を確認してください。
クエリ分析ルールが設定された OpenSearch アプリケーションがあること
OpenSearch コンソールへのアクセス権があること
ステップ 1: 辞書の作成
OpenSearch コンソールにログインします。左側のナビゲーションウィンドウで、[検索アルゴリズムセンター] > [取得設定] を選択します。
[基本設定] ページで、左側のペインにある [辞書管理] をクリックします。
[辞書管理] ページで、右上の [作成] をクリックします。
[クエリ分析辞書の作成] パネルで、辞書の名前を入力し、[辞書タイプ] を [スペル修正] に設定して、[保存] をクリックします。


辞書が辞書リストに表示されます。
ステップ 2: 介入エントリの追加
リストから対象の辞書を見つけ、[アクション] 列の [エントリの管理] をクリックします。
[エントリの管理] ページで、[介入エントリの追加] をクリックします。
[介入エントリの追加] パネルで、各フィールドに入力します。
フィールド 説明 [検索クエリ] マッチさせるスペルミスのある用語またはフレーズ [修正後の単語] 修正後の用語またはフレーズ 介入タイプ 修正を有効にするには [追加] を選択し、修正を防ぐには [ブロック] を選択します [保存] をクリックします。

注:各介入エントリには、一意の検索クエリが必要です。OpenSearch はすべてのエントリコンテンツを正規化します。大文字は小文字に変換され、全角文字は半角文字に変換されます。
ステップ 3: 辞書とクエリ分析ルールの関連付け
[クエリ分析ルール設定] ページに移動し、右上の [作成] をクリックします。
[ルールの作成] パネルで、介入辞書を選択し、クエリ分析ルールに関連付けます。

1 つの介入辞書を複数のクエリ分析ルールに関連付けることができます。
ステップ 4: 本番環境適用前のテスト
ルールを本番アプリケーションに適用する前に、検索テストを実行してスペル修正の結果を検証します。これにより、介入エントリが期待どおりの出力を生成することを確認できます。
例
シナリオ: e コマースショッピングガイドアプリケーションが、クエリ分析ルールとともに OpenSearch を使用しています。本番環境に適用後、一部の検索クエリでスペル修正が不完全なため、予期しない結果が返されます。
問題: 顧客が manhatan で検索すると、組み込み辞書がそれを manhattan のスペルミスとして認識しないため、ごくわずかな結果しか得られません。manhattan を含むほとんどのドキュメントは取得されません。
解決策: 介入エントリ manhatan -> manhattan をスペル修正辞書に追加し、その辞書をクエリ分析ルールに関連付けます。
手順:
制限事項
| 制約 | 制限 |
|---|---|
| アプリケーションあたりの介入辞書数 | 20 |
| 介入エントリあたりの検索クエリ数 | 1 |
| 介入エントリあたりの修正クエリ数 | 1 |
| 辞書あたりの介入エントリ数 | 1,000 |
追加の制約:
検索クエリ内のいずれかの用語が事前定義クエリにマッチすると、エントリが有効になります。例えば、エントリ
changer -> chargerはクエリmobile phone changerに適用されます。OpenSearch はフレーズ全体のエントリを必要としません。介入は、事前定義クエリにマッチする連続した 1 つ以上の完全なセマンティックターム (最大 5 つ) に対してのみ有効です (部分文字列マッチではなく、包括的マッチ)。
介入に基づくスペル修正は、組み込み辞書による修正よりも優先されます。
作成後に辞書の名前やタイプを変更することはできません。
クエリ分析ルールに関連付けられている辞書は、そのルールが本番アプリケーションまたはオフラインアプリケーションに適用されているかどうかにかかわらず、削除できません。まず、辞書とルールの関連付けを解除する必要があります。