consolidate checking of needsFreqs/needsOffsets when pulling docs/positions enums to the terms dict

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1346995 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael McCandless 2012-06-06 17:30:39 +00:00
parent 7f3462ec13
commit 4e52bc3ac9
5 changed files with 10 additions and 21 deletions

View File

@ -688,6 +688,9 @@ public class BlockTermsReader extends FieldsProducer {
@Override @Override
public DocsEnum docs(Bits liveDocs, DocsEnum reuse, boolean needsFreqs) throws IOException { public DocsEnum docs(Bits liveDocs, DocsEnum reuse, boolean needsFreqs) throws IOException {
//System.out.println("BTR.docs this=" + this); //System.out.println("BTR.docs this=" + this);
if (needsFreqs && fieldInfo.getIndexOptions() == IndexOptions.DOCS_ONLY) {
return null;
}
decodeMetaData(); decodeMetaData();
//System.out.println("BTR.docs: state.docFreq=" + state.docFreq); //System.out.println("BTR.docs: state.docFreq=" + state.docFreq);
return postingsReader.docs(fieldInfo, state, liveDocs, reuse, needsFreqs); return postingsReader.docs(fieldInfo, state, liveDocs, reuse, needsFreqs);

View File

@ -885,6 +885,9 @@ public class BlockTreeTermsReader extends FieldsProducer {
@Override @Override
public DocsEnum docs(Bits skipDocs, DocsEnum reuse, boolean needsFreqs) throws IOException { public DocsEnum docs(Bits skipDocs, DocsEnum reuse, boolean needsFreqs) throws IOException {
currentFrame.decodeMetaData(); currentFrame.decodeMetaData();
if (needsFreqs && fieldInfo.getIndexOptions() == IndexOptions.DOCS_ONLY) {
return null;
}
return postingsReader.docs(fieldInfo, currentFrame.termState, skipDocs, reuse, needsFreqs); return postingsReader.docs(fieldInfo, currentFrame.termState, skipDocs, reuse, needsFreqs);
} }
@ -2109,6 +2112,9 @@ public class BlockTreeTermsReader extends FieldsProducer {
@Override @Override
public DocsEnum docs(Bits skipDocs, DocsEnum reuse, boolean needsFreqs) throws IOException { public DocsEnum docs(Bits skipDocs, DocsEnum reuse, boolean needsFreqs) throws IOException {
if (needsFreqs && fieldInfo.getIndexOptions() == IndexOptions.DOCS_ONLY) {
return null;
}
assert !eof; assert !eof;
//if (DEBUG) { //if (DEBUG) {
//System.out.println("BTTR.docs seg=" + segment); //System.out.println("BTTR.docs seg=" + segment);

View File

@ -212,9 +212,7 @@ public class Lucene40PostingsReader extends PostingsReaderBase {
@Override @Override
public DocsEnum docs(FieldInfo fieldInfo, BlockTermState termState, Bits liveDocs, DocsEnum reuse, boolean needsFreqs) throws IOException { public DocsEnum docs(FieldInfo fieldInfo, BlockTermState termState, Bits liveDocs, DocsEnum reuse, boolean needsFreqs) throws IOException {
if (needsFreqs && fieldInfo.getIndexOptions() == IndexOptions.DOCS_ONLY) { if (canReuse(reuse, liveDocs)) {
return null;
} else if (canReuse(reuse, liveDocs)) {
// if (DEBUG) System.out.println("SPR.docs ts=" + termState); // if (DEBUG) System.out.println("SPR.docs ts=" + termState);
return ((SegmentDocsEnumBase) reuse).reset(fieldInfo, (StandardTermState)termState); return ((SegmentDocsEnumBase) reuse).reset(fieldInfo, (StandardTermState)termState);
} }
@ -249,9 +247,6 @@ public class Lucene40PostingsReader extends PostingsReaderBase {
throws IOException { throws IOException {
boolean hasOffsets = fieldInfo.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) >= 0; boolean hasOffsets = fieldInfo.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) >= 0;
if (needsOffsets && !hasOffsets) {
return null; // not available
}
// TODO: refactor // TODO: refactor
if (fieldInfo.hasPayloads() || hasOffsets) { if (fieldInfo.hasPayloads() || hasOffsets) {

View File

@ -179,9 +179,6 @@ public class PulsingPostingsReader extends PostingsReaderBase {
@Override @Override
public DocsEnum docs(FieldInfo field, BlockTermState _termState, Bits liveDocs, DocsEnum reuse, boolean needsFreqs) throws IOException { public DocsEnum docs(FieldInfo field, BlockTermState _termState, Bits liveDocs, DocsEnum reuse, boolean needsFreqs) throws IOException {
if (needsFreqs && field.getIndexOptions() == IndexOptions.DOCS_ONLY) {
return null;
}
PulsingTermState termState = (PulsingTermState) _termState; PulsingTermState termState = (PulsingTermState) _termState;
if (termState.postingsSize != -1) { if (termState.postingsSize != -1) {
PulsingDocsEnum postings; PulsingDocsEnum postings;
@ -217,11 +214,6 @@ public class PulsingPostingsReader extends PostingsReaderBase {
@Override @Override
public DocsAndPositionsEnum docsAndPositions(FieldInfo field, BlockTermState _termState, Bits liveDocs, DocsAndPositionsEnum reuse, public DocsAndPositionsEnum docsAndPositions(FieldInfo field, BlockTermState _termState, Bits liveDocs, DocsAndPositionsEnum reuse,
boolean needsOffsets) throws IOException { boolean needsOffsets) throws IOException {
if (field.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) < 0) {
return null;
} else if (needsOffsets && field.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) < 0) {
return null;
}
final PulsingTermState termState = (PulsingTermState) _termState; final PulsingTermState termState = (PulsingTermState) _termState;

View File

@ -259,9 +259,6 @@ public class SepPostingsReader extends PostingsReaderBase {
@Override @Override
public DocsEnum docs(FieldInfo fieldInfo, BlockTermState _termState, Bits liveDocs, DocsEnum reuse, boolean needsFreqs) throws IOException { public DocsEnum docs(FieldInfo fieldInfo, BlockTermState _termState, Bits liveDocs, DocsEnum reuse, boolean needsFreqs) throws IOException {
if (needsFreqs && fieldInfo.getIndexOptions() == IndexOptions.DOCS_ONLY) {
return null;
}
final SepTermState termState = (SepTermState) _termState; final SepTermState termState = (SepTermState) _termState;
SepDocsEnum docsEnum; SepDocsEnum docsEnum;
if (reuse == null || !(reuse instanceof SepDocsEnum)) { if (reuse == null || !(reuse instanceof SepDocsEnum)) {
@ -284,10 +281,6 @@ public class SepPostingsReader extends PostingsReaderBase {
DocsAndPositionsEnum reuse, boolean needsOffsets) DocsAndPositionsEnum reuse, boolean needsOffsets)
throws IOException { throws IOException {
if (fieldInfo.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) < 0) {
return null;
}
if (needsOffsets) { if (needsOffsets) {
return null; return null;
} }