分析算法在模糊匹配自动完成方面表现良好,但模糊匹配不太好,所以我想将语音分析器添加到相同的名字索引中。我浏览了很多文档,但没有找到关于如何使用 2 分析仪的好文档。
"settings": {
"analysis": {
"analyzer": {
"autocomplete_analyzer": {
"type": "custom",
"tokenizer": "autocomplete_tokenizer",
"filter": [
"lowercase"
]
},
"phonetic_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"phonetic"
]
}
},
"tokenizer": {
"autocomplete_tokenizer": {
"type": "edge_ngram",
"min_gram": 2,
"max_gram": 10,
"token_chars": ["letter", "digit"]
}
}
}
},
"mappings": {
"properties": {
"full_name": {
"type": "text",
"analyzer": "autocomplete_analyzer"
},
"relation_name": {
"type": "text",
},
"address": {
"type": "text"
}
}
}
}
虽然不可能对单个字段使用多个分析器(除非您可以在
index
或 search
时使用不同的分析器),但一个棘手的方法是使用 elasticsearch 中的 copy_to
功能。
因此您可以添加另一个字段,例如
full_name_phonetic
如下所示,在搜索时,在两个字段上查询。
{
"mappings": {
"properties": {
"full_name_phonetic": {
"type": "text",
"analyzer": "phonetic_analyzer"
},
"full_name": {
"type": "text",
"copy_to": "full_name_phonetic"
"analyzer": "autocomplete_analyzer"
},
"relation_name": {
"type": "text",
},
"address": {
"type": "text"
}
}
}
}