Elasticsearch を使用して小さな検索アプリを作成しており、複数の単語 (フレーズ) の提案を使用してオートコンプリート機能を作成する方法を見つけようとしています。私はそれが働いています...ちょっと...
ほとんどの場合、1 つの単語の候補が表示されますが、スペース バーを押すと候補が消えてしまいます。
たとえば、「fast」と入力すると正常に動作し、「fast」と入力すると、提案が表示されなくなります。
私は and を使用してEdge N Grams
おり、こことここmatch_phrase_prefix
の例に従って構築しています。タイトルとコンテンツを除くすべてのフィールドをキャンセルするために、 include_in_all: false を使用したフィールドの場合。小さなデータセットでテストしていて、複数の単語の提案を生成するのに十分なトークン化された用語がないという理由だけで考え始めています。以下の関連するコードを見て、どこが間違っているのか教えてください。_all
match_phrase_prefix
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": "1",
"max_gram": "20",
"token_chars": [
"letter",
"digit"
]
}
},
"analyzer": {
"autocomplete": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"asciifolding",
"autocomplete_filter"
]
},
"whitespace_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"asciifolding"
]