Я экспериментировал с ElasticSearch над своим новым проектом. Я установил анализаторы по умолчанию на использование фильтра токенов ngram. Это мой файл elasticsearch.yml:
index:
analysis:
analyzer:
default_index:
tokenizer: standard
filter: [standard, stop, mynGram]
default_search:
tokenizer: standard
filter: [standard, stop]
filter:
mynGram:
type: nGram
min_gram: 1
max_gram: 10
Я создал новый индекс и добавил к нему следующий документ:
$ curl -XPUT http://localhost:9200/test/newtype/3 -d '{"text": "one two three four five six"}'
{"ok":true,"_index":"test","_type":"newtype","_id":"3"}
Однако при поиске с использованием запроса text: hree
или text: ive
или любых других частичных условий, ElasticSearch не возвращает этот документ. Он возвращает документ только тогда, когда я ищу точный термин (например, текст: два
).
Я также попытался изменить файл конфигурации так, чтобы default_search также использовал фильтр токенов ngram, но результат был таким же. Что я здесь делаю не так и как это исправить?