【发布时间】:2014-07-22 08:18:21
【问题描述】:
我有四个文档,其中包含一个名为“fullname”的字段。
文件:
- 阿比盖尔·哈里森
- 阿比盖尔·哈迪森
- 阿比琳哈维顿
- 阿比林-哈文顿
我想为此字段创建一个自动完成程序。一些例子:
搜索:“阿比” 结果:“Abigail Harrison”、“Abigale Hardison”、“Abilene Haveton”
搜索:“Abig” 结果:“Abigail Harrison”、“Abigale Hardison”
搜索:“阿比盖尔·哈尔” 结果:“Abigail Harrison”、“Abigale Hardison”
搜索:“Abilene Hav” 结果:“Abilene Haveton”、“Abilene-Havington”
搜索:“哈” 结果:“Abigail Harrison”、“Abigale Hardison”
我不想要这样的东西:(!)
搜索:“iga” 结果:“Abigail Harrison”、“Abigale Hardison”
应该忽略空格和连字符,我希望所有生成的标记都小写,因此搜索查询不应该区分大小写。
我的 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"
}
}
}
}
}
}
【问题讨论】:
-
这似乎是什么问题?发生了什么出乎意料的事情?
标签: search lucene elasticsearch