Lucene中的布尔搜索

Lucene中的布尔搜索,lucene,Lucene,我一直试图在lucene中运行以下布尔查询,但似乎失败了。请帮忙 (a或b)和c->工作正常 (a和b)或c->给出a和b或c的结果。所以a变成了必须,b和c变成了应该,搜索结果是错误的。当它应该像a一样工作时,b必须可用,或者c可能可用 另一个例子: 如果搜索“(a和b)”,它将返回x个结果 如果搜索“c”,它将返回y个结果 如果搜索“(a和b)或“c”,结果数不能小于x或y中的较大值。但这并没有发生。请帮助我如何执行此操作?(a和b)或c转换为(+a+b)c。你想要的是没有括号的:+a+bc

我一直试图在lucene中运行以下布尔查询,但似乎失败了。请帮忙

(a或b)和c->工作正常

(a和b)或c->给出a和b或c的结果。所以a变成了必须,b和c变成了应该,搜索结果是错误的。当它应该像a一样工作时,b必须可用,或者c可能可用

另一个例子:

如果搜索“(a和b)”,它将返回x个结果

如果搜索“c”,它将返回y个结果

如果搜索“(a和b)或“c”,结果数不能小于x或y中的较大值。但这并没有发生。请帮助我如何执行此操作?

(a和b)或c转换为
(+a+b)c
。你想要的是没有括号的:
+a+bc


从逻辑的角度来看,“a和B必须发生,C可能发生”等同于“a和B必须发生”。(在古典逻辑中,没有办法说“可能是真的”)所以你很难用布尔术语说
(+a+B)C
。一种方法是“(a和b和c)或(a和b)”

谢谢你的回复。然而,我的理解是,所有有任何一个或多个的文档都应该出现在这个布尔搜索结果中,这是不会发生的。因此,从逻辑角度来看,如果文档中出现a和B,或者只有C出现,那么所有这些文档都应该在结果集中返回。@ranjit:您是否尝试过像
(+a+B)C
那样执行此操作?这至少会缩小问题的范围。我认为在一些查询解析器中,OR需要大写,这在您的示例中没有,所以可能是这样。a b和c是您正在搜索的实际值吗?