【发布时间】:2017-07-14 10:10:02
【问题描述】:
我只需要将带有 AND、OR 和 NOT 的布尔查询转换为 AND 和 NOT。我所有的 OR 都需要转换为 AND,显然保持原意。
例如:
a AND b AND (c OR d OR e)
应该转换成几个单独的查询:
a AND b AND c
a AND b AND d
a AND b AND e
它具有相同的逻辑结果,但它没有使用 OR。 我尝试了很多不同的方法,但还没有真正的解决方案。 我知道我也许可以使用一些德摩根定律,但还没有找到解决方案。
请务必注意,我需要转换任何类型的查询,而不仅仅是我的示例中的那个。我必须真正涵盖这一切。 作为其他示例(逗号表示另一个查询):
a OR b > a, b
a AND (b OR c) > a AND b, a AND c
a OR (b AND (c OR d)) > a, b AND c, b AND d
...
谢谢!
编辑: 更清晰的例子:
lucene AND (solr OR hadoop) > lucene AND solr, lucene AND hadoop
stackoverflow AND (java OR lucene) -solr > stackoverflow AND java -solr, stackoverflow AND lucene -solr
【问题讨论】:
标签: java solr lucene logic boolean-logic