【发布时间】:2015-04-06 11:34:30
【问题描述】:
我正在寻找一种方法来过滤具有多个条件的 lucene 索引。为此,我检查了两种不同的过滤搜索方法,它们都不适合我:
使用布尔查询:
BooleanQuery query = new BooleanQuery();
String lower = "*";
String upper = "*";
for (String fieldName : keywordSourceFields) {
TermRangeQuery rangeQuery = TermRangeQuery.newStringRange(fieldName,
lower, upper, true, true);
query.add(rangeQuery, Occur.MUST);
}
TermRangeQuery rangeQuery = TermRangeQuery.newStringRange(keywordField,
lower, upper, true, true);
query.add(rangeQuery, Occur.MUST_NOT);
try {
TopDocs results = searcher.search(query, null,
maxNumDocs);
使用布尔过滤器:
BooleanFilter filter = new BooleanFilter();
String lower = "*";
String upper = "*";
for (String fieldName : keywordSourceFields) {
TermRangeFilter rangeFilter = TermRangeFilter.newStringRange(fieldName,
lower, upper, true, true);
filter.add(rangeFilter, Occur.MUST_NOT);
}
TermRangeFilter rangeFilter = TermRangeFilter.newStringRange(keywordField,
lower, upper, true, true);
filter.add(rangeFilter, Occur.MUST);
try {
TopDocs results = searcher.search(new MatchAllDocsQuery(), filter,
maxNumDocs);
我想知道所选查询的哪一部分是错误的?我正在寻找对于每个keywordSourceFields,该字段都有一些值并且也没有关键字字段值的文档。请指导我纠正相应的查询。
最好的问候。
【问题讨论】: