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,29 +32,43 @@ 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) {
{
var hit = firstTopDocs.scoreDocs[0];
if (publishHit(hit, resultsConsumer) == HandleResult.HALT) {
return;
}
}
ObjectArrayList<ScoreDoc> hits = ObjectArrayList.wrap(searcher.getTopDocs(offset, limit - 1).scoreDocs);
for (ScoreDoc hit : hits) { for (ScoreDoc hit : hits) {
if (publishHit(hit, resultsConsumer) == HandleResult.HALT) {
return;
}
}
}
}
private HandleResult publishHit(ScoreDoc hit, ResultItemConsumer resultsConsumer) throws IOException {
int docId = hit.doc; int docId = hit.doc;
float score = hit.score; float score = hit.score;
if (LuceneUtils.collectTopDoc(logger, return LuceneUtils.collectTopDoc(logger,
docId, docId,
score, score,
minCompetitiveScore, minCompetitiveScore,
indexSearcher, indexSearcher,
keyFieldName, keyFieldName,
resultsConsumer resultsConsumer
) == HandleResult.HALT) { );
return;
}
}
} }
}; };
} }