首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Lucene:将带OR的布尔查询转换为仅AND

Lucene:将带OR的布尔查询转换为仅AND
EN

Stack Overflow用户
提问于 2017-02-24 03:00:39
回答 2查看 584关注 0票数 0

我需要将带有and、OR和NOT的布尔查询转换为and和NOT。我所有的OR都需要转换成AND,显然保持了原来的意思。

例如:

代码语言:javascript
运行
复制
a AND b AND (c OR d OR e)

应转换为多个单独的查询:

代码语言:javascript
运行
复制
a AND b AND c
a AND b AND d
a AND b AND e

它有相同的逻辑结果,但它没有使用OR。我尝试了很多不同的方法,但还没有真正的解决方案。我知道我也许可以使用一些德摩根定律,但还没有找到解决方案。

需要注意的是,我需要转换任何类型的查询,而不仅仅是我的示例中的查询。我真的要把所有的东西都包起来。作为其他示例(逗号表示另一个查询):

代码语言:javascript
运行
复制
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
...

谢谢!

编辑:更清晰的示例:

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

回答已采纳

发布于 2017-02-24 10:00:15

听起来您需要将搜索表达式转换为disjunctive normal form。然后,析取的每一项都可以用作单独的搜索,并组合搜索结果。

尝试在谷歌上搜索“转换为析取范式”,以获取过程和示例。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42424038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档