Используйте 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
следуют остальные документы в индексе.
Вы могли бы уточнить, нужны ли вам все документы, заказанные в какой-то мере? Если это так, вы можете открыть индекс с помощью IndexReader и выполнить цикл сбора документов. – Mikos
В Solr вы можете использовать запрос «*: *» для извлечения всех документов и всех полей из индекса. – Mikos