# Elasticsearchの機能と実践的な使い方
🗣️ 「ノートパソコン」と「ラップトップ」を同じものとして検索したい——そんな表記ゆれ・言い換えを吸収するのが同義語(シノニム)機能です。Synonyms APIなら再インデックスなしで運用できます。
🏷️ タイトル: Synonyms API / synonym token filter
🔗 URL:
📘 概要
同義語機能は、同じ概念を別の語で表現したドキュメントもヒットさせ、検索の関連性を高めます。ドメイン固有の語彙やよくある誤記の吸収にも使えます。Synonyms APIで同義語セットを独立リソースとして管理すれば、複数のアナライザーから参照でき、更新時の再インデックスも不要になります。
⚙️ 機能の説明
ルールには2つの書式があります。
・等価(双方向):`ノートパソコン, ラップトップ, notebook` のようにカンマ区切り。`expand=true`で全語が相互にマッチ、`expand=false`で先頭語を正規形にまとめます。
・明示(片方向):`i-pod, i pod => ipod` のように `=>` で左辺を右辺へ置換します。
トークンフィルタは`synonym`と`synonym_graph`の2種があり、複数語の同義語を正しく扱える`synonym_graph`が推奨です。同義語は検索時(search-time)に適用すると、更新しても再インデックスが不要になります。
🛠️ 実践的な使い方
Synonyms APIで同義語セットを作り、`updateable: true`のアナライザーから参照します。
```
PUT _synonyms/my-synonym-set
{ "synonyms_set": [
{ "id": "1", "synonyms": "ノートパソコン, ラップトップ, notebook" },
{ "id": "2", "synonyms": "pc => personal computer" } ] }
```
このセットを `synonym_graph` フィルタの `synonyms_set` に指定し、検索用アナライザー(`search_analyzer`)に組み込みます。`updateable: true`なら、APIでセットを更新すると関連アナライザーが自動でリロードされ、即座に検索結果へ反映されます。`_analyze` APIで適用結果を事前確認できます。
💡 ユースケース
EC検索の品質改善サイクルに最適です。検索ログを分析して「ヒット0件だった言い換え語」を見つけ、Synonyms APIで同義語セットに追加するだけで、再インデックスなしに即反映できます。「探しているのに見つからない」を継続的に潰していけます。
⚠️ 注意点
複数語の同義語は必ず`synonym_graph`を使ってください(旧`synonym`フィルタは位置情報を壊します)。同義語リストが大きいとヒープを消費し、95%を超えるとサーキットブレーカーが作動します。`lenient=false`の場合はインデックスがredになり得るため、本番ではインラインではなくAPI管理のセットを使うのが安全です。
#
Elasticsearch# #
SearchRelevance#