Update SimpleStreamSearcher.java

This commit is contained in:
Andrea Cavalli 2021-04-01 22:58:05 +02:00
parent 918ff71091
commit 20069e7e06

View File

@ -32,30 +32,44 @@ public class SimpleStreamSearcher implements LuceneStreamSearcher {
scoreMode != ScoreMode.COMPLETE_NO_SCORES, scoreMode != ScoreMode.COMPLETE_NO_SCORES,
1000 1000
); );
var firstTopDocs = searcher.getTopDocs(0, 1);
long totalHitsCount = firstTopDocs.totalHits.value;
return new LuceneSearchInstance() { return new LuceneSearchInstance() {
@Override @Override
public long getTotalHitsCount() throws IOException { public long getTotalHitsCount() {
return searcher.getTopDocs(0, 1).totalHits.value; return totalHitsCount;
} }
@Override @Override
public void getResults(ResultItemConsumer resultsConsumer) throws IOException { public void getResults(ResultItemConsumer resultsConsumer) throws IOException {
ObjectArrayList<ScoreDoc> hits = ObjectArrayList.wrap(searcher.getTopDocs(offset, limit).scoreDocs); if (firstTopDocs.scoreDocs.length > 0) {
for (ScoreDoc hit : hits) { {
int docId = hit.doc; var hit = firstTopDocs.scoreDocs[0];
float score = hit.score; if (publishHit(hit, resultsConsumer) == HandleResult.HALT) {
if (LuceneUtils.collectTopDoc(logger, return;
docId, }
score, }
minCompetitiveScore, ObjectArrayList<ScoreDoc> hits = ObjectArrayList.wrap(searcher.getTopDocs(offset, limit - 1).scoreDocs);
indexSearcher, for (ScoreDoc hit : hits) {
keyFieldName, if (publishHit(hit, resultsConsumer) == HandleResult.HALT) {
resultsConsumer return;
) == HandleResult.HALT) { }
return;
} }
} }
} }
private HandleResult publishHit(ScoreDoc hit, ResultItemConsumer resultsConsumer) throws IOException {
int docId = hit.doc;
float score = hit.score;
return LuceneUtils.collectTopDoc(logger,
docId,
score,
minCompetitiveScore,
indexSearcher,
keyFieldName,
resultsConsumer
);
}
}; };
} }
} }