Elasticsearch: пример автозаполнения поиска с пробелами не работает - PullRequest
0 голосов
/ 01 ноября 2018

Цель:

Если у меня есть документ с заголовком The Hitchhikers Guide, при следующем поиске будет выведен этот документ:

  • hitch
  • the hit
  • hitchhikers gu

Следующие поиски НЕ приведут к этому документу:

  • hiker
  • uid
  • guide th

Я следую за этой статьей: https://medium.com/@davedash/writing-a-space-ignoring-autocompleter-with-elasticsearch-6c3c28e3a974

Но я не могу получить ожидаемые результаты на этапе индексации / анализа. Я пробовал это на ES 5.3 и 6.3.

Вот что у меня есть:

Мое сопоставление:

PUT my_test

{
    "settings" : {
        "index":{
            "analysis":{
                "filter": {
                    "autocomplete_filter": {
                        "type": "edge_ngram",
                        "min_gram": "1",
                        "max_gram": "30"
                    },
                    "autocomplete_word_joiner": {
                        "type": "word_delimiter",
                        "catenate_all": true
                    }
                },
                "analyzer":{
                    "product_name_autocomplete_analyzer": {
                        "type": "custom",
                        "tokenizer": "keyword",
                        "filter": [
                            "lowercase",
                            "autocomplete_word_joiner",
                            "autocomplete_filter"
                        ]   
                    }
                }
            }
        }
    },
    "mappings" : {
        "doc" : {
            "properties": {
                "name": {
                    "type": "text", 
                    "store": true,
                    "analyzer": "product_name_autocomplete_analyzer",
                    "term_vector": "with_positions_offsets" 
                }
            }
        }
    }
}

А затем тестируем анализатор:

POST my_test / _analyze

{
  "analyzer": "product_name_autocomplete_analyzer",
  "text": "the hitchhikers guide"
}

Вот токены:

t
th
the
theh
thehi
thehit
...
thehitchikersguid
thehitchikersguide
h
hi
hit
hitc
hitch
...
hitchiker
hitchikers
g
gu
...
guide

Это неожиданно, потому что отсутствует hitchhikersg, hitchhikersgu и т. Д.

Это означает, что поиск по hitchhikers gu завершается неудачно, что я и вижу.

Любой совет?

...