Цель:
Если у меня есть документ с заголовком The Hitchhikers Guide
, при следующем поиске будет выведен этот документ:
hitch
the hit
hitchhikers gu
Следующие поиски НЕ приведут к этому документу:
Я следую за этой статьей: 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
завершается неудачно, что я и вижу.
Любой совет?