查询构建器 - 必须/不应该

时间:2011-04-18 13:31:51

标签: java lucene search-engine elasticsearch

我是搜索引擎领域的新手,我想知道是否有人可以帮助我澄清Must / MustNot和Should / ShouldNot搜索查询。


我的理解如下:

Must / MustNot查询是绝对定义(即结果必须/不得包含指定字段)

应该/不应该查询是相对定义(即,在某些情况下它应该/不应该包含指定的字段)


如果这是正确的,有人可以请我提供一个例子,说明你何时使用应该/不应该......如果我的理解是完全错误的 - 有人会善意为我解释(或指向我一个好网站)?

谢谢!

聚苯乙烯。我正在使用弹性搜索(基于Lucene) - 但欢迎任何示例/解释

1 个答案:

答案 0 :(得分:4)

您的理解是正确的。不应该在找到结果时获得较低的重量,但绝不能包括在内。

不应该在术语可能属于不同的域时使用,但在某些情况下仍然可以与我正在寻找的文档位于同一文档中。例如,谷歌知道我是一名Java程序员。当我问“蚂蚁”时,第一个结果将是“Apache Ant”。我可能不会使用“-Apache”,或者我可能不应该使用“Apache”,以防某些页面描述Apache本地世界观中蚂蚁的特殊位置。

或者,例如,我正在寻找一个免费软件来完成任务;如果它不贵或者他们有个人执照,我会考虑付费的。因此我不应该“立即购买”,结果将包括付费软件,但在列表中较低。