Я использую Elasticsearch для создания небольшого поискового приложения и пытаюсь понять, как создать функцию автозаполнения с предложениями из нескольких слов (фраз). У меня он работает ... вроде ...
Я получаю в основном предложения из одного слова, но когда я нажимаю клавишу пробела - предложения убиваются.
Например, если я набираю «быстро», все работает нормально, если я набираю «быстро» - это останавливает появление предложений.
Я использую Edge N Grams
и match_phrase_prefix
и следую примерам, здесь и здесь, чтобы создать его. из. Для поля _all
в match_phrase_prefix
и просто использовал include_in_all: false, чтобы отменить все поля, кроме заголовка и содержимого. Я начинаю думать, что это просто потому, что я тестирую небольшой набор данных, а токенизированных терминов просто недостаточно для создания предложений из нескольких слов. Пожалуйста, взгляните на соответствующий код ниже и сообщите мне, где я ошибаюсь, если таковые имеются?
"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"
]