Jag*_*esh 30 lucene search boolean
任何人都可以通过一个例子来解释BooleanQuery中lucene中的BooleanClause.Occur.Must和BooleanClause.Occur.SHOULD之间的区别吗?
jpo*_*ntz 33
BooleanClause.Occur.SHOULD
表示该条款是可选的,但BooleanClause.Occur.Must
意味着该条款是强制性的.
但是,如果布尔查询只有可选子句,则必须至少匹配一个子句才能使文档出现在结果中.
为了更好地控制哪些文档与BooleanQuery匹配,还有一个minimumShouldMatch参数,它允许您告诉Lucene至少的minimumShouldMatch
BooleanClause.Occur.SHOULD
子句必须匹配才能在结果中显示文档.
Log*_*gan 25
我将尝试使用一个例子来解释:
让我们假设有两个子句:条款A和条款B.现在,BooleanClause.Occur的效果如下:
在第一种情况下,子句A和B都设置了BooleanClause.Occur.Should标志.这意味着即使其中一个条款得到满足(A或B),那么该文件也会受到影响.
在第二种情况下,子句A具有BooleanClause.Occur.Must标志集,而子句B具有BooleanClause.Occur.Should标志集.
在这种情况下,当文档"将"满足条款A时,文档将被命中.该文档是否满足条款B将不会影响它.
但如果文件不满足条款A,那么无论它是否满足条款B,它都不会受到影响.
在第三种情况下,子句A和子句B都设置了BooleanClause.Occur.Must标志.
在这种情况下,只有当文档满足"两个"条款时,文档才会成为命中.如果它甚至不能满足其中一个条款,那么它就不会受到影响.
BooleanClause.Occur.Must
代表强制条款。必须满足子句才能返回结果。基本上AND
。
BooleanClause.Occur.SHOULD
代表可选子句,其行为类似于OR