Используйте BooleanQuery
, чтобы объединить ваш исходный запрос с MatchAllDocsQuery
.Вы можете уменьшить влияние, которое это оказывает на оценку, установив повышение на MatchAllDocsQuery
на ноль, прежде чем объединить его с основным запросом.Таким образом, вам не нужно добавлять фиктивное поле в индекс.
Например:
// Parse a query by the user.
QueryParser qp = new QueryParser(Version.LUCENE_35, "text", new StandardAnalyzer());
Query standardQuery = qp.parse("User query may go here");
// Make a query that matches everything, but has no boost.
MatchAllDocsQuery matchAllDocsQuery = new MatchAllDocsQuery();
matchAllDocsQuery.setBoost(0f);
// Combine the queries.
BooleanQuery boolQuery = new BooleanQuery();
boolQuery.add(standardQuery, BooleanClause.Occur.SHOULD);
boolQuery.add(matchAllDocsQuery, BooleanClause.Occur.SHOULD);
// Now just pass it to the searcher.
Это должно дать вам попадания из standardQuery
, за которыми следуют остальныедокументы в указателе.