布尔搜索在Lucene中

时间:2011-06-01 15:25:44

标签: lucene

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

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

(a AND b)或c - >给出AND b OR c的结果。所以a变为必须,b和c变为应该,并且搜索结果是错误的。它应该像a一样工作,b必须可用或c可用。

另一个例子:

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

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

如果搜索“(a和b)或c”,结果数不能小于x或y中的较大者。但这不会发生。请帮助我如何继续实施?

1 个答案:

答案 0 :(得分:0)

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

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