Lucene查询中的顺序是否会影响结果?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lucene查询中的顺序是否会影响结果?相关的知识,希望对你有一定的参考价值。

我在HTTP GET请求中尝试了下面的2个Lucene查询,以搜索我的ElasticSearch中的文档:

q=(Name:"20190401_150454_992" OR "test video")

q=(Name:"test video" OR "20190401_150454_992")

第1个结果仅包含此文档:

"_source": {
    "Name": "test video",
    "Latitude": 25.1062949,
    ...
}

第二个结果包含上面的文档,和

"_source": {
    "Name": "20190401_150454_992",
    "Latitude": 0,
    ...
}

也。

我期望结果应该是相同的(它们应该返回两个查询中的2个文档),因为我没有更改任何其他条件,除了查询字符串中的查询字段的顺序,但它们不是。谁有人解释为什么?谢谢!

我正在使用ElasticSearch 5.5.2。

答案

你的问题是关于它的区别

q =(名称:“测试视频”或“20190401_150454_992 ”)

q =(名称:“20190401_150454_992 ”或“测试视频”)

请注意,“名称”字段仅绑定到您的第一个短语。所以请试试

q =姓名:(“测试视频”或“20190401_150454_992 ”)

因为你的查询等于

q =名称:“测试视频”或_all:“20190401_150454_992 ”

为什么?因为有一个默认搜索字段:https://www.elastic.co/guide/en/elasticsearch/reference/5.2/mapping-all-field.html#querying-all-field

以上是关于Lucene查询中的顺序是否会影响结果?的主要内容,如果未能解决你的问题,请参考以下文章

Lucene:跨查询比较结果

如何查找结果是否在lucene索引中的2个日期之间下降?

LINQ 查询子句的顺序是不是会影响实体框架的性能?

验证相关度排序是否受查询的多个关键字在内容中相邻紧密程度有关

使用Java中的Lucene查询搜索文本字符串

输入顺序是不是影响回归模型结果?