17

Elasticsearch の同義語をインデックスに保存することはできますか? または、couchdb のようなデータベースからシノニム リストを取得することは可能ですか? REST-API を使用して、elasticsearch にシノニムを動的に追加したいと考えています。

4

4 に答える 4

16

同義語を使用する場合、2つのアプローチがあります。

  • インデックス作成時にそれらを拡張し、
  • クエリ時にそれらを拡張します。

クエリ時に同義語を拡張すると、次の問題が発生するため、お勧めしません。

  • 同義語には異なるドキュメント頻度があるため、スコアリング、
  • クエリパーサーは空白で分割されるため、マルチトークンの同義語。

詳細については、http: //wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory(Solr wikiにありますが、ElasticSearchにも関連しています)を参照してください。

したがって、推奨されるアプローチは、インデックス作成時に同義語を拡張することです。あなたの場合、同義語リストが動的に管理されている場合は、更新前と更新後に分析されたドキュメント間でスコアが一貫するように、同義語リストが更新された用語を含むすべてのドキュメントのインデックスを再作成する必要があることを意味します。それが不可能だと言っているわけではありませんが、ある程度の作業が必要であり、インデックスに頻繁に含まれる同義語でパフォーマンスの問題が発生する可能性があります。

于 2011-09-01T16:51:07.420 に答える
1

類義語リストを更新することは、elasticsearch ではそれほど苦痛ではありません。開いたり閉じたりすることで実行できます。どこからでも駆動できますが、独自のインフラストラクチャが必要です。次のように機能します。

  • 現在のインデックスを指すエイリアスが必要です
  • 新しいインデックス ファイルをサーバーに同期する
  • 新しいインデックスを使用するカスタム アナライザーで新しいインデックスを作成する
  • 現在のインデックスから新しいインデックスにコンテンツを再構築します
  • インデックス エイリアスを現在のインデックスから新しいインデックスに再ポイントする
于 2011-09-24T08:17:21.367 に答える