Lucene クエリの一部として、N 未満の用語を含むドキュメント、または特定のサイズより小さいドキュメントを結果から除外することは可能ですか?
全文: 多くのドキュメントを含む Lucene インデックスがあります。それらのいくつかは大きく、他のものは非常に小さく、おそらく数語だけです. いくつかのテストを実行したいのですが、妥当なサイズのドキュメントに対してのみです。小さなドキュメントを除外するにはどうすればよいですか? 現在、用語の頻度ベクトルをフェッチし、N 未満の用語を含むドキュメントをドロップしています。
BooleanQuery q = some query...
TopDocs top = indexSearcher.search(q, size);
Collection<Integer> docNums = collectDocNums(top);
Iterator<Integer> it = docNums.iterator();
while (it.hasNext()) {
int candDocNum = it.next();
TermFreqVector tfv =
indexReader.getTermFreqVector(candDocNum, "field");
if (tfv.getTerms().length < N)
it.remove();
}
クエリ自体をフィルタリングするか、その下のループを何らかの方法でバッチ処理することにより、これをより効率的に行うことができますか?