elasticsearch - ElasticSearch 查询字符串的模糊查找

标签 elasticsearch query-string fuzzy-search

我使用 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/

相关文章:

elasticsearch - elasticsearch必须查询结合OR?

java - 如何在Java中使用ElasticSearch JSON DSL?

Elasticsearch 响应时间 - 奇怪的值

node.js http 'get' 请求带有查询字符串参数

java - HttpServletRequest - 获取查询字符串参数,无表单数据

lucene - 使用 Lucene 查找拼写错误

elasticsearch - Elasticsearch/Lucene:查询以查找文档开头或结尾附近的单词

http - 查询字符串的最大长度是多少?

windows - 是否可以在 Windows 10 git-bash 中使用 fzf(命令行模糊查找器)?

python - gettext 中的模糊字符串是什么?