From 4e52bc3ac9ad5b3362b1173573056b28e3099766 Mon Sep 17 00:00:00 2001 From: Michael McCandless Date: Wed, 6 Jun 2012 17:30:39 +0000 Subject: [PATCH] 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 --- .../java/org/apache/lucene/codecs/BlockTermsReader.java | 3 +++ .../org/apache/lucene/codecs/BlockTreeTermsReader.java | 6 ++++++ .../lucene/codecs/lucene40/Lucene40PostingsReader.java | 7 +------ .../lucene/codecs/pulsing/PulsingPostingsReader.java | 8 -------- .../org/apache/lucene/codecs/sep/SepPostingsReader.java | 7 ------- 5 files changed, 10 insertions(+), 21 deletions(-) diff --git a/lucene/core/src/java/org/apache/lucene/codecs/BlockTermsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/BlockTermsReader.java index d7af0497e8b..546920f08a4 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/BlockTermsReader.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/BlockTermsReader.java @@ -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); diff --git a/lucene/core/src/java/org/apache/lucene/codecs/BlockTreeTermsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/BlockTreeTermsReader.java index de9a546e63b..923669f36c8 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/BlockTreeTermsReader.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/BlockTreeTermsReader.java @@ -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); diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40PostingsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40PostingsReader.java index a7624dcc030..576727482e6 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40PostingsReader.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40PostingsReader.java @@ -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) { diff --git a/lucene/core/src/java/org/apache/lucene/codecs/pulsing/PulsingPostingsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/pulsing/PulsingPostingsReader.java index f5026fdb02a..76b90fbd61b 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/pulsing/PulsingPostingsReader.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/pulsing/PulsingPostingsReader.java @@ -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; diff --git a/lucene/core/src/java/org/apache/lucene/codecs/sep/SepPostingsReader.java b/lucene/core/src/java/org/apache/lucene/codecs/sep/SepPostingsReader.java index 9957ba8da36..fed5a5dcbf3 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/sep/SepPostingsReader.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/sep/SepPostingsReader.java @@ -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; }