Я перевожу Lucene с 2.0 на 7.0.Не удалось найти альтернативу для ChainedFilter в последней версии Lucene.Не могли бы вы помочь мне с миграцией.
Я использовал BooleanQuery.Builder () для миграции с фильтра на запрос, но мой пример использования здесь немного другой.Ниже приведен мой старый код, который необходимо перенести.
Filter filter = null;
ArrayList filters = new ArrayList();
BooleanQuery filterQuery = new BooleanQuery();
filterQuery.add(new TermQuery(new Term(TEXT_FIELD,"0")), BooleanClause.Occur.MUST);
Filter moduleFilter = new QueryWrapperFilter(filterQuery);
filters.add(moduleFilter);
BooleanQuery filterQuery2 = new BooleanQuery();
filterQuery2.add(new TermQuery(new Term(TEXT_FIELD2,"0")), BooleanClause.Occur.MUST);
Filter moduleFilter2 = new QueryWrapperFilter(filterQuery2);
filters.add(moduleFilter2);
if ((filters!=null) && (filters.size()>0)){
Filter []filterArray = new Filter[filters.size()];
filter = new ChainedFilter((Filter[])filters.toArray(filterArray), ChainedFilter.OR);
}
Я внес следующие изменения, чтобы перейти от фильтра к запросу.
Query filter = null;
ArrayList filters = new ArrayList();
BooleanQuery.Builder booleanQueryBuilder = new BooleanQuery.Builder();
booleanQueryBuilder.add(new TermQuery(new Term(TEXT_FIELD,"0")), BooleanClause.Occur.MUST);
Query moduleFilter = booleanQueryBuilder.build();
filters.add(moduleFilter);
BooleanQuery.Builder booleanQueryBuilder2 = new BooleanQuery.Builder();
booleanQueryBuilder2.add(new TermQuery(new Term(TEXT_FIELD2,"0")), BooleanClause.Occur.MUST);
Query moduleFilter2 = booleanQueryBuilder2.build();
filters.add(moduleFilter2);
if ((filters!=null) && (filters.size()>0)){
Query []filterArray = new Query[filters.size()];
filter = new ChainedQuery((Filter[])filters.toArray(filterArray), ChainedFilter.OR);
}
Я считаю, что указанные выше изменения верны, ноне понимая, как изменить ChainedFilter.