OpenSearchで全角半角とひらがなカタカナを正規化して検索する
OpenSearch
知識
OpenSearch で日本語検索を扱う場合、入力ゆれを吸収するために全角・半角、ひらがな・カタカナ、大文字・小文字を正規化しておくと検索漏れを減らせる。
代表的には、char_filter で文字幅を正規化し、filter でかな種別や大小文字を正規化する。
ts
char_filter: {
normalize_width: {
type: 'icu_normalizer',
},
},
filter: {
normalize_kana: {
type: 'icu_transform',
id: 'Hiragana-Katakana; Fullwidth-Halfwidth; Lower',
},
},この設定により、たとえば次のような表記ゆれを同じ検索対象として扱いやすくなる。
ABCとABC123と123ひらがなとヒラガナ- 大文字と小文字の違い
使いどころ:
- 会社名、担当者名、住所、自由入力テキストなど、ユーザー入力の表記ゆれが多いフィールド
- CSV 取り込みや外部連携など、データの入力元によって文字種が揺れるフィールド
- 検索キーワード側とインデックス側の両方で同じ正規化を適用したい場合
注意点として、正規化は analyzer / normalizer の設計に依存するため、インデックス作成後に設定を変える場合は再インデックスが必要になることが多い。検索漏れを調査するときは、クエリだけでなく対象フィールドの analyzer 設定と投入済みデータの再インデックス有無も確認する。