make bulk buffers in termscorer final

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1182586 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Robert Muir 2011-10-12 21:23:35 +00:00
parent ed19804a96
commit c6dfb65b41

View File

@ -25,15 +25,15 @@ import org.apache.lucene.search.similarities.Similarity;
/** Expert: A <code>Scorer</code> for documents matching a <code>Term</code>.
*/
final class TermScorer extends Scorer {
private DocsEnum docsEnum;
private final DocsEnum docsEnum;
private int doc = -1;
private int freq;
private int pointer;
private int pointerMax;
private int[] docs;
private int[] freqs;
private final int[] docs;
private final int[] freqs;
private final DocsEnum.BulkReadResult bulkResult;
private final Similarity.ExactDocScorer docScorer;
@ -53,6 +53,8 @@ final class TermScorer extends Scorer {
this.docScorer = docScorer;
this.docsEnum = td;
bulkResult = td.getBulkResult();
docs = bulkResult.docs.ints;
freqs = bulkResult.freqs.ints;
}
@Override
@ -60,12 +62,6 @@ final class TermScorer extends Scorer {
score(c, Integer.MAX_VALUE, nextDoc());
}
private final void refillBuffer() throws IOException {
pointerMax = docsEnum.read(); // refill
docs = bulkResult.docs.ints;
freqs = bulkResult.freqs.ints;
}
// firstDocID is ignored since nextDoc() sets 'doc'
@Override
public boolean score(Collector c, int end, int firstDocID) throws IOException {
@ -74,7 +70,7 @@ final class TermScorer extends Scorer {
//System.out.println("TS: collect doc=" + doc);
c.collect(doc); // collect score
if (++pointer >= pointerMax) {
refillBuffer();
pointerMax = docsEnum.read(); // refill
if (pointerMax != 0) {
pointer = 0;
} else {
@ -109,7 +105,7 @@ final class TermScorer extends Scorer {
public int nextDoc() throws IOException {
pointer++;
if (pointer >= pointerMax) {
refillBuffer();
pointerMax = docsEnum.read(); // refill
if (pointerMax != 0) {
pointer = 0;
} else {