Skip to content

Commit

Permalink
Scan Search: Take track_scores into account, if set, return also scor…
Browse files Browse the repository at this point in the history
…es per doc when scanning, closes elastic#1139.
  • Loading branch information
kimchy committed Jul 20, 2011
1 parent 5ea757a commit a34c0f3
Showing 1 changed file with 9 additions and 3 deletions.
Expand Up @@ -204,7 +204,7 @@ public void execute(SearchContext searchContext) throws QueryPhaseExecutionExcep
}
topDocs = countCollector.topDocs();
} else if (searchContext.searchType() == SearchType.SCAN) {
ScanCollector scanCollector = new ScanCollector(searchContext.from(), searchContext.size());
ScanCollector scanCollector = new ScanCollector(searchContext.from(), searchContext.size(), searchContext.trackScores());
try {
searchContext.searcher().search(query, scanCollector);
} catch (ScanCollector.StopCollectingException e) {
Expand Down Expand Up @@ -259,13 +259,18 @@ static class ScanCollector extends Collector {

private final ArrayList<ScoreDoc> docs;

private final boolean trackScores;

private Scorer scorer;

private int docBase;

private int counter;

ScanCollector(int from, int size) {
ScanCollector(int from, int size, boolean trackScores) {
this.from = from;
this.to = from + size;
this.trackScores = trackScores;
this.docs = new ArrayList<ScoreDoc>(size);
}

Expand All @@ -274,11 +279,12 @@ public TopDocs topDocs() {
}

@Override public void setScorer(Scorer scorer) throws IOException {
this.scorer = scorer;
}

@Override public void collect(int doc) throws IOException {
if (counter >= from) {
docs.add(new ScoreDoc(docBase + doc, 0f));
docs.add(new ScoreDoc(docBase + doc, trackScores ? scorer.score() : 0f));
}
counter++;
if (counter >= to) {
Expand Down

0 comments on commit a34c0f3

Please sign in to comment.