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
|
@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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue