2017-10-11 6 views
0

私は、単語が等しいフィールドに対してファジーマッチする方法を探しています。ElasticSearch - ファジーキーワードマッチ

ie。私はそうのような値を持つフィールドを持っている場合: -

foobar 
foobar number2 
barfoo 
barfoo number2 

と私はfoobaで検索私は、私はnumber2で検索した場合、私は戻らないしたい文書foobarなくfoobar number2

を返したいです両方ともnumber2の値は2ワードです。

私は用語クエリがあいまいではないことを知っています。これはどのクエリでも可能ですか?

私が質問を投稿する20分後にそれを働いた2日間これで戦った後elasticsearch 5.4

おかげ

答えて

0

を使用しています。あなたはkeywordトークナイザを使用して、フィールドのカスタムアナライザを作成する必要が

: - :

"term": { 
    "type": "text", 
    "analyzer": "all_words_analyzer" 
} 

今通常のファジーマッチのように動作します -

"analyzer": { 
    "all_words_analyzer": { 
     "filter": [ 
      "lowercase" 
     ], 
     "type": "custom", 
     "tokenizer": "keyword" 
    } 
} 

その後はフィールド上という設定しました上記。

"query": { 
    "fuzzy": { 
     term": { 
      "value": "fooba" 
     } 
    } 
}