Kir*_*ddy 5 elasticsearch nest
我正在尝试设置一个现有/自定义分析器,该分析器可以使用缩写进行搜索。例如,如果文本字段是“美国银行”,则搜索 BOfA 或 BOA、BofA 等应匹配此记录。
我怎样才能做到这一点?
您可能可以将同义词过滤器标记用于自定义分析器。
例如以下映射
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": ["lowercase", "synonym_filter"]
}
},
"filter": {
"synonym_filter": {
"type": "synonym",
"synonyms": [
"bank of america,boa"
],
"expand": true
}
}
}
},
"mappings": {
"document": {
"properties": {
"text": {
"type": "text",
"analyzer": "my_analyzer",
"fielddata": true
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
当然,您可以向列表中添加更多内容或使用同义词文件。
对于查询用例 BOfA 或 BOA, BofA - 可以使用两种方法。
1) 这些可能的组合的更多同义词
"synonyms": [
"bank of america,boa"
"bank of america,bofa"
]
Run Code Online (Sandbox Code Playgroud)
2)或者保持缩写完整并使用模糊查询
{
"query": {
"match": {
"text" : {
"query": "bofa",
"fuzziness": 2
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您将需要同义词来为 ES 提供缩写。
| 归档时间: |
|
| 查看次数: |
2354 次 |
| 最近记录: |