mirror of
https://github.com/apache/lucene.git
synced 2025-02-28 21:39:25 +00:00
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:
parent
ed19804a96
commit
c6dfb65b41
@ -25,15 +25,15 @@ import org.apache.lucene.search.similarities.Similarity;
|
|||||||
/** Expert: A <code>Scorer</code> for documents matching a <code>Term</code>.
|
/** Expert: A <code>Scorer</code> for documents matching a <code>Term</code>.
|
||||||
*/
|
*/
|
||||||
final class TermScorer extends Scorer {
|
final class TermScorer extends Scorer {
|
||||||
private DocsEnum docsEnum;
|
private final DocsEnum docsEnum;
|
||||||
private int doc = -1;
|
private int doc = -1;
|
||||||
private int freq;
|
private int freq;
|
||||||
|
|
||||||
private int pointer;
|
private int pointer;
|
||||||
private int pointerMax;
|
private int pointerMax;
|
||||||
|
|
||||||
private int[] docs;
|
private final int[] docs;
|
||||||
private int[] freqs;
|
private final int[] freqs;
|
||||||
private final DocsEnum.BulkReadResult bulkResult;
|
private final DocsEnum.BulkReadResult bulkResult;
|
||||||
private final Similarity.ExactDocScorer docScorer;
|
private final Similarity.ExactDocScorer docScorer;
|
||||||
|
|
||||||
@ -53,6 +53,8 @@ final class TermScorer extends Scorer {
|
|||||||
this.docScorer = docScorer;
|
this.docScorer = docScorer;
|
||||||
this.docsEnum = td;
|
this.docsEnum = td;
|
||||||
bulkResult = td.getBulkResult();
|
bulkResult = td.getBulkResult();
|
||||||
|
docs = bulkResult.docs.ints;
|
||||||
|
freqs = bulkResult.freqs.ints;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -60,12 +62,6 @@ final class TermScorer extends Scorer {
|
|||||||
score(c, Integer.MAX_VALUE, nextDoc());
|
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'
|
// firstDocID is ignored since nextDoc() sets 'doc'
|
||||||
@Override
|
@Override
|
||||||
public boolean score(Collector c, int end, int firstDocID) throws IOException {
|
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);
|
//System.out.println("TS: collect doc=" + doc);
|
||||||
c.collect(doc); // collect score
|
c.collect(doc); // collect score
|
||||||
if (++pointer >= pointerMax) {
|
if (++pointer >= pointerMax) {
|
||||||
refillBuffer();
|
pointerMax = docsEnum.read(); // refill
|
||||||
if (pointerMax != 0) {
|
if (pointerMax != 0) {
|
||||||
pointer = 0;
|
pointer = 0;
|
||||||
} else {
|
} else {
|
||||||
@ -109,7 +105,7 @@ final class TermScorer extends Scorer {
|
|||||||
public int nextDoc() throws IOException {
|
public int nextDoc() throws IOException {
|
||||||
pointer++;
|
pointer++;
|
||||||
if (pointer >= pointerMax) {
|
if (pointer >= pointerMax) {
|
||||||
refillBuffer();
|
pointerMax = docsEnum.read(); // refill
|
||||||
if (pointerMax != 0) {
|
if (pointerMax != 0) {
|
||||||
pointer = 0;
|
pointer = 0;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user