0

我有三个字段说F1, F2, F3。我想找到所有三个字段值为空的所有文档。我可以通过使用来实现这一点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);

这肯定行不通。我怎样才能做到这一点?任何帮助都会有所帮助。

4

1 回答 1

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);

此布尔查询正在此字段中搜索空词(词的第二个参数是“”),对于每个字段,它必须是必须的。

于 2017-09-29T15:16:12.147 回答