我一直在尝试在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中的较大者。但这不会发生。请帮助我如何继续实施?
答案 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)”。