elasticsearchで同義語を使用する

解決策1:作成されたカスタムアナライザの変更が必要で、フィールド名

に追加するポイント1:mapping

Whitespace tokenizerで小文字のトークナイザーを追加すると、トークンは小文字に変換されません。 また、同義語のリストには'Television'が追加されていますが、'television'を照会しています。

マッピングに小文字のトークンフィルタを次のように追加すると、クエリが期待される結果を得ます。

ポイント2: フィールド名

にanalyzerを追加します。prd_nameを以下のマッピングで作成した方法として確認してください。 Analyzerを追加したことに注意してください。

マッピング

PUT products{ "settings":{ "index":{ "analysis":{ "analyzer":{ "synonym":{ "tokenizer":"whitespace", "filter": } }, "filter":{ "synonym":{ "type":"synonym", "synonyms_path":"analysis/synonym.txt" } } } } }, "mappings":{ "mydocs":{ "properties":{ "prd_name":{ "type":"text", "analyzer":"synonym", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } } } } }}

マッピングを変更すると、インデックスを再作成してドキュメントを再度取り込む必要があることに注意してください。

シノニムファイルがすべてのノードで使用可能であることを確認してください。

それが役立つかどうかを教えてください。

ソリューション2: デフォルトのアナライザ

を再定義するフィールドのマッピングを変更できない場合は、設定

defaultという名前のアナライザを作成することができます。defaultアナライザは、基本的にanalyzersynonymとまったく同じ設定で再定義します。

そうすれば、standardanalyzerの代わりに使用されるデフォルトのanalyzerになり、フィールド名のマッピングを変更する必要はありません。

以下は、その場合のマッピングの仕方です。

マッピング

PUT <your_index_name>{ "settings":{ "index":{ "analysis":{ "analyzer":{ "default":{ "tokenizer":"whitespace", "filter": } }, "filter":{ "synonym":{ "type":"synonym", "synonyms_path":"analysis/synonym.txt" } } } } }, "mappings":{ "mydocs":{ "properties":{ "prd_name":{ "type":"text", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } } } } }}

マッピングでは、単にsynonymdefaultに変更したことに注意してください。

重要な注意:変更を有効にするには、何らかの方法ですべてのデータを再インデックスする必要があります。 マッピングを変更し、すべてのデータを再インデックス化し、w.r.tフィールド名を必要とする何かを行うことができれば、解決策1を強くお勧めします。

これが役立つかどうか教えてください:)

コメントを残す

メールアドレスが公開されることはありません。

Related Posts