2012-11-28 4 views
8

小規模なフィールド(場所など)に対して、ElasticSearchを使用して文字ごとの先読みオートコンプリートを実装する標準的な方法がありますか?ElasticSearchでの先取り自動補完のサポート

(この記事を書いている時点では、検索によっていくつかの議論がありますが、決定的なものはありません)(また、Apache Lucene 4のオートコンプリート/ 。))

ありがとうございます。ダビデが書いたように、あなたがNGramsを使用するか、プラグインをお勧めすることができますhttps://github.com/spinscale/elasticsearch-suggest-plugin

HTH

答えて

9

あなたは、エッジNGRAMベースのアナライザを使用http://www.elasticsearch.org/guide/reference/index-modules/analysis/edgengram-tokenizer.html

を参照するか、お勧めのプラグインを使用することができます。 lucene 4では、独立した索引を必要とせずに、すぐにすぐ使える自動提案をすることができます。

"facets" : { 
    "tag" : { 
     "terms" : { 
      "field" : "field_name", 
      "regex" : "prefix.*" 
     } 
    } 
} 

正規表現は一例であり、それはすることができます。今すぐあなたも自分のフィールド上terms facetを作成し、関連する接頭辞で始まるエントリのみを維持するために正規表現パターンを使用することができますについては

また、適切なregex flagを使用して大文字と小文字を区別しないようにすることもできます。また、多くのユニークな用語を含むフィールドのファセット上での作成は、十分なメモリがない限り、素晴らしいアイデアではないことに注意してください。

+0

シンプルな使用例NGram:https://gist.github.com/988923 –

3

使用バージョン0.90.3以降で利用可能です内蔵の自動補完の提案者:

http://www.elastic.co/guide/en/elasticsearch/reference/master/search-suggesters-completion.html

それは驚くほど速いですし、まさにそのユースケースのために開発されました。

+0

BTW @imim新しい完了プレフィックス提案機能は、0.90.0ではなく0.90.3であり(まだ実験的と見なされています)。 https://github.com/elasticsearch/elasticsearch/issues/3376 – Ran

+0

Trueは非常に高速ですが、mySQL LIKE接頭辞*またはRedis/CouchBaseの自動補完と同じです。 –

+0

答えのリンクはもう存在しません。これは初心者のための助けかもしれません! http://www.elastic.co/guide/en/elasticsearch/reference/master/search-suggesters.html –

関連する問題