我有四個名爲「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"
}
}
}
}
}
}
什麼似乎是問題?發生了什麼,你不指望? –