我使用 ElasticSearch 让用户搜索由连接的标签字符串组成的文本字段。查询看起来像这样并且运行良好:
{
'query' : {
'query_string' : {
'query' : 'user query with +bool AND operators',
'default_operator' : 'AND',
'fields' : ['tag_string'],
'analyzer' : 'my_analyzer'
}
}
}
但是,我想启用模糊匹配,以便涵盖英式英语和美式拼写。例如。我想获得“灰色”和“灰色”或“颜色”和“颜色”的相同结果。
这可以由用户使用模糊运算符“~”来完成 - 因此搜索“color~”同时匹配“color”和“colour”。但这应该是自动完成的……然而,搜索查询可能包含 bool 运算符,因此可能很复杂。
最佳答案
您可以使用模糊查询:
{
"fuzzy" : { "user" : "ki" }
}
或者在匹配
查询中使用模糊性
因素。在示例中实现所需内容的另一种方法是使用同义词。使用同义词,您可以告诉 elasticsearch 将您的单词的同义词与原始单词一起存储,例如灰色将存储为灰色和灰色。
这里是对同义词的深入描述:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-synonym-tokenfilter.html
关于elasticsearch - ElasticSearch 查询字符串的模糊查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20455648/