目标:
如果我有一个标题为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上尝试过。
这是我到目前为止的内容:
我的映射:
输入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
上搜索失败,这就是我所看到的。
有什么建议吗?