「スペル修正」は、検索クエリ内の入力ミスを検出して修正する機能です。これにより、ユーザーの入力に誤りがある場合でも、関連性の高い検索結果を提供できます。OpenSearch は、修正候補を検出すると、その修正の信頼性に基づいて、修正後のクエリで検索を実行するか、元のクエリで検索を実行するかを決定します。
スペル修正の仕組み
OpenSearch は、各検索クエリのスペルミスを評価し、次のロジックを適用します:
修正の信頼性が高い場合 (
correction_level: 1)、OpenSearch は修正されたクエリを使用します。修正の信頼性が低い (
correction_level: 2) 場合、OpenSearch は元のクエリを使用します。
いずれの場合も、検索応答の qp フィールドには、元のクエリと修正されたクエリの両方が含まれます:
{
"qp": [
{
"app_name": "検索に使用される OpenSearch アプリケーションの名前",
"query_correction_info": [
{
"index": "検索に使用されるインデックスの名前",
"original_query": "元の検索クエリ",
"corrected_query": "エラーが修正された新しい検索クエリ",
"correction_level": 1
}
]
}
]
}correction_level フィールドは、スペル修正の信頼性を示します:
| 値 | 信頼性 | 検索動作 |
|---|---|---|
1 | 高 | OpenSearch は修正後のクエリを使用します |
2 | 低 | OpenSearch は元のクエリを使用します |
スペル修正の有効化
OpenSearch コンソールにログインします。左側のナビゲーションウィンドウで [検索設定] をクリックします。表示された **[基本設定]** ページで、左側のペインにある [クエリ分析ルール設定] をクリックします。**[クエリ分析ルール設定]** ページで、アプリケーションと、そのアプリケーションのオンラインまたはオフラインバージョンを選択し、[作成] をクリックします。
**[ルールの作成]** パネルで、ルール名を入力し、インデックス範囲を指定し、業種を選択し、[スペル修正] を選択してから、[OK] をクリックします。
説明介入辞書が指定されていない場合、OpenSearch は内蔵辞書を使用してスペルミスを修正します。特定されたスペルミスが無効である場合、または内蔵辞書に基づいてスペルミスが特定されない場合は、介入辞書を指定してください。詳細については、「スペル修正のための介入辞書」をご参照ください。
ルールが作成されたら、検索テストを実行します。
クエリ分析ルールリストで、対象のルールを見つけ、[操作] 列の [検索テスト] をクリックします。検索テストページで、スペルミスのあるクエリ (たとえば、デフォルトインデックス内のスペルミスのあるプロダクト名) を入力し、qp パラメーターを
test_errorに設定し、[検索] をクリックします。ページ下部の通知バーに、スペルミスのあるクエリが自動的に修正され、修正されたクエリが検索に使用されたことを示す修正結果が表示されます。クエリ分析プロセスを表示するには、クエリ分析詳細をクリックします。
検索テストページで、スペルミスを含むクエリを入力し、[クエリ分析プロセス] ダイアログボックスを開くと、クエリ分析プロセスを確認できます。ダイアログボックスには、次の分析ステップが表示されます:[スペル修正] がスペルミスのあった term を意図した term に修正し (修正レベル:修正後のクエリに完全置換)、[正規化] が修正後の term を返し、[形態素解析] が修正後の term をトークンに分割し、最終的なクエリがこれらのトークンを使用してデフォルトインデックスで書き換えられます。検索結果ページには、修正後のクエリに対して検索が実行されたことが表示されます。
クエリ分析プロセスが正しいことを確認したら、**[クエリ分析ルール設定]** ページで [インデックス指向] をクリックし、作成したクエリ分析ルールをデフォルトのクエリ分析ルールとして設定します。
デフォルトのクエリ分析ルールが正しく設定されていることを確認します。
クエリ分析ルールがデフォルトとして設定されると、ルール名の前に [デフォルト] プレフィックスが表示されます。例:[デフォルト]test_error。
スペル修正のための介入辞書
介入辞書は、内蔵辞書を補完するカスタム修正エントリのコレクションです。内蔵辞書がスペルミスを特定しない場合、または内蔵辞書が特定した修正がご利用のユースケースにとって無効である場合は、介入辞書を使用します。
介入辞書を作成した後、クエリ分析ルールを作成または変更する際にそれを指定することで、内蔵の修正動作をオーバーライドまたは拡張できます。詳細については、「スペル修正のための介入辞書」をご参照ください。