我有四个名为“fullname”的字段。ElasticSearch自动完成功能
文件:
- 阿比盖尔·哈里森
- Abigale哈迪森
- 阿比林Havington
- 阿比林-Havington
我想作一个autocompleter此字段。一些例子:
搜索: “阿比” 结果: “阿比盖尔·哈里森”, “Abigale哈迪森”, “阿比林Havington”
搜索: “Abig” 结果:“阿比盖尔·哈里森”, “Abigale哈迪森”
搜索: “阿比盖尔喀拉” 结果: “阿比盖尔·哈里森”, “Abigale哈迪森”
搜索: “阿比林HAV” 结果: “阿比林Havington”, “阿比林-Havington”
搜索: “喀拉” 结果: “阿比盖尔·哈里森”, “Abigale哈迪森”
我不希望是这样的:(!)
搜索:“IGA” 结果:“阿比盖尔·哈里森”,“Abigale哈迪森”
空格和连字符应该被忽略,我想所有生成的令牌小写,所以搜索查询不应该区分大小写。
我的ES设置如下。
{
"mappings": {
"person": {
"properties": {
"fullname": {
"index": "analyzed",
"index_analyzer": "autocomplete",
"search_analyzer": "standard",
"type": "string"
}
}
}
},
"settings": {
"index": {
"analysis": {
"analyzer": {
"autocomplete": {
"filter": [
"lowercase",
"edgengram"
],
"tokenizer": "whitespace"
}
},
"filter": {
"edgengram": {
"max_gram": 50,
"min_gram": 3,
"type": "edgeNGram"
}
}
}
}
}
}
什么似乎是问题?发生了什么,你不指望? –