mirror of https://github.com/apache/lucene.git
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:
parent
7f3462ec13
commit
4e52bc3ac9
|
@ -688,6 +688,9 @@ public class BlockTermsReader extends FieldsProducer {
|
|||
@Override
|
||||
public DocsEnum docs(Bits liveDocs, DocsEnum reuse, boolean needsFreqs) throws IOException {
|
||||
//System.out.println("BTR.docs this=" + this);
|
||||
if (needsFreqs && fieldInfo.getIndexOptions() == IndexOptions.DOCS_ONLY) {
|
||||
return null;
|
||||
}
|
||||
decodeMetaData();
|
||||
//System.out.println("BTR.docs: state.docFreq=" + state.docFreq);
|
||||
return postingsReader.docs(fieldInfo, state, liveDocs, reuse, needsFreqs);
|
||||
|
|
|
@ -885,6 +885,9 @@ public class BlockTreeTermsReader extends FieldsProducer {
|
|||
@Override
|
||||
public DocsEnum docs(Bits skipDocs, DocsEnum reuse, boolean needsFreqs) throws IOException {
|
||||
currentFrame.decodeMetaData();
|
||||
if (needsFreqs && fieldInfo.getIndexOptions() == IndexOptions.DOCS_ONLY) {
|
||||
return null;
|
||||
}
|
||||
return postingsReader.docs(fieldInfo, currentFrame.termState, skipDocs, reuse, needsFreqs);
|
||||
}
|
||||
|
||||
|
@ -2109,6 +2112,9 @@ public class BlockTreeTermsReader extends FieldsProducer {
|
|||
|
||||
@Override
|
||||
public DocsEnum docs(Bits skipDocs, DocsEnum reuse, boolean needsFreqs) throws IOException {
|
||||
if (needsFreqs && fieldInfo.getIndexOptions() == IndexOptions.DOCS_ONLY) {
|
||||
return null;
|
||||
}
|
||||
assert !eof;
|
||||
//if (DEBUG) {
|
||||
//System.out.println("BTTR.docs seg=" + segment);
|
||||
|
|
|
@ -212,9 +212,7 @@ public class Lucene40PostingsReader extends PostingsReaderBase {
|
|||
|
||||
@Override
|
||||
public DocsEnum docs(FieldInfo fieldInfo, BlockTermState termState, Bits liveDocs, DocsEnum reuse, boolean needsFreqs) throws IOException {
|
||||
if (needsFreqs && fieldInfo.getIndexOptions() == IndexOptions.DOCS_ONLY) {
|
||||
return null;
|
||||
} else if (canReuse(reuse, liveDocs)) {
|
||||
if (canReuse(reuse, liveDocs)) {
|
||||
// if (DEBUG) System.out.println("SPR.docs ts=" + termState);
|
||||
return ((SegmentDocsEnumBase) reuse).reset(fieldInfo, (StandardTermState)termState);
|
||||
}
|
||||
|
@ -249,9 +247,6 @@ public class Lucene40PostingsReader extends PostingsReaderBase {
|
|||
throws IOException {
|
||||
|
||||
boolean hasOffsets = fieldInfo.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS) >= 0;
|
||||
if (needsOffsets && !hasOffsets) {
|
||||
return null; // not available
|
||||
}
|
||||
|
||||
// TODO: refactor
|
||||
if (fieldInfo.hasPayloads() || hasOffsets) {
|
||||
|
|
|
@ -179,9 +179,6 @@ public class PulsingPostingsReader extends PostingsReaderBase {
|
|||
|
||||
@Override
|
||||
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;
|
||||
if (termState.postingsSize != -1) {
|
||||
PulsingDocsEnum postings;
|
||||
|
@ -217,11 +214,6 @@ public class PulsingPostingsReader extends PostingsReaderBase {
|
|||
@Override
|
||||
public DocsAndPositionsEnum docsAndPositions(FieldInfo field, BlockTermState _termState, Bits liveDocs, DocsAndPositionsEnum reuse,
|
||||
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;
|
||||
|
||||
|
|
|
@ -259,9 +259,6 @@ public class SepPostingsReader extends PostingsReaderBase {
|
|||
|
||||
@Override
|
||||
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;
|
||||
SepDocsEnum docsEnum;
|
||||
if (reuse == null || !(reuse instanceof SepDocsEnum)) {
|
||||
|
@ -284,10 +281,6 @@ public class SepPostingsReader extends PostingsReaderBase {
|
|||
DocsAndPositionsEnum reuse, boolean needsOffsets)
|
||||
throws IOException {
|
||||
|
||||
if (fieldInfo.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) < 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (needsOffsets) {
|
||||
return null;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue