Фильтр n-грамм токенов ElasticSearch не находит частичные слова

Я экспериментировал с 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, но результат был таким же. Что я здесь делаю не так и как это исправить?

9
задан Brian Webster 28 January 2013 в 22:00
поделиться