多个字段之间的BooleanQuery

时间:2017-09-27 07:20:49

标签: lucene booleanquery

我有三个字段:F1F2F3。我想找到所有三个字段值为null的文档。我可以使用BooleanQuery来实现这一目标吗?如果我对所有三个字段使用MUST_NOT子句,那么它将不会返回具有其中一个字段为非空值的文档。

我在谈论实现类似的东西

BooleanQuery booleanQuery = new BooleanQuery();
booleanQuery.add(new TermQuery(new Term(F1,"")), BooleanClause.Occur.MUST_NOT);
booleanQuery.add(new TermQuery(new Term(F2,"")), BooleanClause.Occur.MUST_NOT);
booleanQuery.add(new TermQuery(new Term(F3,"")), BooleanClause.Occur.MUST_NOT);

这肯定不会起作用。我怎么能实现这个目标?任何帮助都会有所帮助。

1 个答案:

答案 0 :(得分:0)

不确定你的索引是怎样的,但是你想要做到这一点吗?

你想要一个用这个字段搜索的查询,这个字段必须是空的

BooleanQuery booleanQuery = new BooleanQuery();
booleanQuery.add(new TermQuery(new Term(F1,"")), BooleanClause.Occur.MUST);
booleanQuery.add(new TermQuery(new Term(F2,"")), BooleanClause.Occur.MUST);
booleanQuery.add(new TermQuery(new Term(F3,"")), BooleanClause.Occur.MUST);

此布尔查询在此字段中搜索空术语(术语的第二个参数是""),对于每个必须是必须的字段。