elasticsearch ElasticSearch以模糊查询的形式查看多个字段
假设我有一个类似于上面所示的模式。用户要求应用程序显示一些“无用”的内容 如何编写一个查询,通过标题、摘要和标签查找“无用”一词作为模糊搜索?来自文档 此查询之所以有效,是因为它使用的是elasticsearch ElasticSearch以模糊查询的形式查看多个字段,elasticsearch,lucene,elasticsearch,Lucene,假设我有一个类似于上面所示的模式。用户要求应用程序显示一些“无用”的内容 如何编写一个查询,通过标题、摘要和标签查找“无用”一词作为模糊搜索?来自文档 此查询之所以有效,是因为它使用的是多匹配查询 模糊性仅适用于基本的匹配和多匹配查询。信息技术 不适用于短语匹配、常用术语或交叉字段 火柴 否则,您必须在一个boolQuery中执行几个fuzzy查询,好的,让它工作起来。当我尝试“使用”而不是“无用”时,我没有得到任何结果。为什么?有没有办法也允许这样做?部分字符串?这取决于分析器、标记过滤器等,
多匹配
查询
模糊性仅适用于基本的匹配
和多匹配
查询。信息技术
不适用于短语匹配、常用术语或交叉字段
火柴
否则,您必须在一个
bool
Query中执行几个fuzzy
查询,好的,让它工作起来。当我尝试“使用”而不是“无用”时,我没有得到任何结果。为什么?有没有办法也允许这样做?部分字符串?这取决于分析器、标记过滤器等,您使用它们来索引实体,然后搜索它们的方式。假设您使用的是标准分析器(英语),您的标题将首先标记为“That”、“useeless”、“mazing”和“Title”标记,然后将独立分析每个标记。对于标记“无用”,我认为标准英语分析器存储“无用”(小写)。所以,当你搜索“使用”时,你没有找到任何结果。尝试使用其他分析器,也许您想添加自己的令牌过滤器。我个人更喜欢使用ElasticSearch.GL提供的!我猜你会喜欢边缘NGram标记器和标准标记器的混合。记住,对于令牌过滤器,顺序确实很重要
{
"title" : "That Uselessly Amazing Title",
"author" : "Someone you have never heard of",
"url" : "http://www.theuselessweb.com",
"summary" : "a collection of useless websites",
"tag" : ["useless","maybe useful"]
}
GET /my_index/my_type/_search
{
"query": {
"multi_match": {
"fields": [ "summary", "title", "tag" ],
"query": "useless",
"fuzziness": "AUTO"
}
}
}