You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ha...@apache.org on 2013/08/20 05:30:44 UTC

svn commit: r1515695 - in /lucene/dev/branches/lucene3069/lucene/codecs/src: java/org/apache/lucene/codecs/temp/ resources/META-INF/services/

Author: han
Date: Tue Aug 20 03:30:43 2013
New Revision: 1515695

URL: http://svn.apache.org/r1515695
Log:
fix bug on TempNestedPF

Added:
    lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempNestedPulsingPostingsFormat.java
      - copied, changed from r1515469, lucene/dev/branches/lucene3069/lucene/test-framework/src/java/org/apache/lucene/codecs/nestedpulsing/NestedPulsingPostingsFormat.java
Modified:
    lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempPulsingPostingsReader.java
    lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempPulsingPostingsWriter.java
    lucene/dev/branches/lucene3069/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.PostingsFormat

Copied: lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempNestedPulsingPostingsFormat.java (from r1515469, lucene/dev/branches/lucene3069/lucene/test-framework/src/java/org/apache/lucene/codecs/nestedpulsing/NestedPulsingPostingsFormat.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempNestedPulsingPostingsFormat.java?p2=lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempNestedPulsingPostingsFormat.java&p1=lucene/dev/branches/lucene3069/lucene/test-framework/src/java/org/apache/lucene/codecs/nestedpulsing/NestedPulsingPostingsFormat.java&r1=1515469&r2=1515695&rev=1515695&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/test-framework/src/java/org/apache/lucene/codecs/nestedpulsing/NestedPulsingPostingsFormat.java (original)
+++ lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempNestedPulsingPostingsFormat.java Tue Aug 20 03:30:43 2013
@@ -1,4 +1,4 @@
-package org.apache.lucene.codecs.nestedpulsing;
+package org.apache.lucene.codecs.temp;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
@@ -19,17 +19,11 @@ package org.apache.lucene.codecs.nestedp
 
 import java.io.IOException;
 
-import org.apache.lucene.codecs.BlockTreeTermsReader;
-import org.apache.lucene.codecs.BlockTreeTermsWriter;
 import org.apache.lucene.codecs.FieldsConsumer;
 import org.apache.lucene.codecs.FieldsProducer;
 import org.apache.lucene.codecs.PostingsFormat;
-import org.apache.lucene.codecs.PostingsReaderBase;
-import org.apache.lucene.codecs.PostingsWriterBase;
-import org.apache.lucene.codecs.lucene41.Lucene41PostingsReader;
-import org.apache.lucene.codecs.lucene41.Lucene41PostingsWriter;
-import org.apache.lucene.codecs.pulsing.PulsingPostingsReader;
-import org.apache.lucene.codecs.pulsing.PulsingPostingsWriter;
+import org.apache.lucene.codecs.TempPostingsReaderBase;
+import org.apache.lucene.codecs.TempPostingsWriterBase;
 import org.apache.lucene.index.SegmentReadState;
 import org.apache.lucene.index.SegmentWriteState;
 import org.apache.lucene.util.IOUtils;
@@ -41,26 +35,26 @@ import org.apache.lucene.util.IOUtils;
 // TODO: if we create PulsingPostingsBaseFormat then we
 // can simplify this? note: I don't like the *BaseFormat
 // hierarchy, maybe we can clean that up...
-public final class NestedPulsingPostingsFormat extends PostingsFormat {
-  public NestedPulsingPostingsFormat() {
-    super("NestedPulsing");
+public final class TempNestedPulsingPostingsFormat extends PostingsFormat {
+  public TempNestedPulsingPostingsFormat() {
+    super("TempNestedPulsing");
   }
   
   @Override
   public FieldsConsumer fieldsConsumer(SegmentWriteState state) throws IOException {
-    PostingsWriterBase docsWriter = null;
-    PostingsWriterBase pulsingWriterInner = null;
-    PostingsWriterBase pulsingWriter = null;
+    TempPostingsWriterBase docsWriter = null;
+    TempPostingsWriterBase pulsingWriterInner = null;
+    TempPostingsWriterBase pulsingWriter = null;
     
     // Terms dict
     boolean success = false;
     try {
-      docsWriter = new Lucene41PostingsWriter(state);
+      docsWriter = new TempPostingsWriter(state);
 
-      pulsingWriterInner = new PulsingPostingsWriter(2, docsWriter);
-      pulsingWriter = new PulsingPostingsWriter(1, pulsingWriterInner);
-      FieldsConsumer ret = new BlockTreeTermsWriter(state, pulsingWriter, 
-          BlockTreeTermsWriter.DEFAULT_MIN_BLOCK_SIZE, BlockTreeTermsWriter.DEFAULT_MAX_BLOCK_SIZE);
+      pulsingWriterInner = new TempPulsingPostingsWriter(state, 2, docsWriter);
+      pulsingWriter = new TempPulsingPostingsWriter(state, 1, pulsingWriterInner);
+      FieldsConsumer ret = new TempBlockTreeTermsWriter(state, pulsingWriter, 
+          TempBlockTreeTermsWriter.DEFAULT_MIN_BLOCK_SIZE, TempBlockTreeTermsWriter.DEFAULT_MAX_BLOCK_SIZE);
       success = true;
       return ret;
     } finally {
@@ -72,15 +66,15 @@ public final class NestedPulsingPostings
 
   @Override
   public FieldsProducer fieldsProducer(SegmentReadState state) throws IOException {
-    PostingsReaderBase docsReader = null;
-    PostingsReaderBase pulsingReaderInner = null;
-    PostingsReaderBase pulsingReader = null;
+    TempPostingsReaderBase docsReader = null;
+    TempPostingsReaderBase pulsingReaderInner = null;
+    TempPostingsReaderBase pulsingReader = null;
     boolean success = false;
     try {
-      docsReader = new Lucene41PostingsReader(state.directory, state.fieldInfos, state.segmentInfo, state.context, state.segmentSuffix);
-      pulsingReaderInner = new PulsingPostingsReader(docsReader);
-      pulsingReader = new PulsingPostingsReader(pulsingReaderInner);
-      FieldsProducer ret = new BlockTreeTermsReader(
+      docsReader = new TempPostingsReader(state.directory, state.fieldInfos, state.segmentInfo, state.context, state.segmentSuffix);
+      pulsingReaderInner = new TempPulsingPostingsReader(state, docsReader);
+      pulsingReader = new TempPulsingPostingsReader(state, pulsingReaderInner);
+      FieldsProducer ret = new TempBlockTreeTermsReader(
                                                     state.directory, state.fieldInfos, state.segmentInfo,
                                                     pulsingReader,
                                                     state.context,

Modified: lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempPulsingPostingsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempPulsingPostingsReader.java?rev=1515695&r1=1515694&r2=1515695&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempPulsingPostingsReader.java (original)
+++ lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempPulsingPostingsReader.java Tue Aug 20 03:30:43 2013
@@ -70,10 +70,12 @@ public class TempPulsingPostingsReader e
     version = CodecUtil.checkHeader(termsIn, TempPulsingPostingsWriter.CODEC,
                                     TempPulsingPostingsWriter.VERSION_START, 
                                     TempPulsingPostingsWriter.VERSION_CURRENT);
-    // nocommit: here open file to load field summary
     maxPositions = termsIn.readVInt();
     wrappedPostingsReader.init(termsIn);
-    if (version >= TempPulsingPostingsWriter.VERSION_META_ARRAY) {
+    if (wrappedPostingsReader instanceof TempPulsingPostingsReader || 
+        version < TempPulsingPostingsWriter.VERSION_META_ARRAY) {
+      fields = null;
+    } else {
       fields = new TreeMap<Integer, Integer>();
       String summaryFileName = IndexFileNames.segmentFileName(segmentState.segmentInfo.name, segmentState.segmentSuffix, TempPulsingPostingsWriter.SUMMARY_EXTENSION);
       IndexInput in = null;
@@ -90,9 +92,6 @@ public class TempPulsingPostingsReader e
       } finally {
         IOUtils.closeWhileHandlingException(in);
       }
-    } else {
-      assert false;
-      fields = null;
     }
   }
 
@@ -164,11 +163,6 @@ public class TempPulsingPostingsReader e
     long count = fieldInfo.getIndexOptions().compareTo(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS) >= 0 ? termState.totalTermFreq : termState.docFreq;
     //System.out.println("  count=" + count + " threshold=" + maxPositions);
 
-    // term dict have no chance to init this
-    // nocommit: nuke this?
-    if (termState.termBlockOrd == 0) {  
-      termState.wrappedTermState.termBlockOrd = 0;
-    }
     if (count <= maxPositions) {
       // Inlined into terms dict -- just read the byte[] blob in,
       // but don't decode it now (we only decode when a DocsEnum
@@ -183,14 +177,12 @@ public class TempPulsingPostingsReader e
       // blob for this term)...
       in.readBytes(termState.postings, 0, termState.postingsSize);
       //System.out.println("  inlined bytes=" + termState.postingsSize);
-      termState.absolute = absolute ? true : termState.absolute;
+      termState.absolute = termState.absolute || absolute;
     } else {
       //System.out.println("  not inlined");
-      final int longsSize = fields.get(fieldInfo.number);
+      final int longsSize = fields == null ? 0 : fields.get(fieldInfo.number);
       if (termState.longs == null) {
         termState.longs = new long[longsSize];
-      } else {
-        assert termState.longs.length == longsSize;
       }
       for (int i = 0; i < longsSize; i++) {
         termState.longs[i] = in.readVLong();
@@ -199,7 +191,6 @@ public class TempPulsingPostingsReader e
       termState.wrappedTermState.docFreq = termState.docFreq;
       termState.wrappedTermState.totalTermFreq = termState.totalTermFreq;
       wrappedPostingsReader.decodeTerm(termState.longs, in, fieldInfo, termState.wrappedTermState, termState.absolute);
-      termState.wrappedTermState.termBlockOrd++;
       termState.absolute = false;
     }
   }

Modified: lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempPulsingPostingsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempPulsingPostingsWriter.java?rev=1515695&r1=1515694&r2=1515695&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempPulsingPostingsWriter.java (original)
+++ lucene/dev/branches/lucene3069/lucene/codecs/src/java/org/apache/lucene/codecs/temp/TempPulsingPostingsWriter.java Tue Aug 20 03:30:43 2013
@@ -384,7 +384,6 @@ public final class TempPulsingPostingsWr
     assert empty.length == 0;
     this.absolute = this.absolute || absolute;
     if (state.bytes == null) {
-      assert longsSize > 0;
       wrappedPostingsWriter.encodeTerm(longs, buffer, fieldInfo, state.wrappedState, this.absolute);
       for (int i = 0; i < longsSize; i++) {
         out.writeVLong(longs[i]);
@@ -395,14 +394,17 @@ public final class TempPulsingPostingsWr
     } else {
       out.writeVInt(state.bytes.length);
       out.writeBytes(state.bytes, 0, state.bytes.length);
-      this.absolute = absolute ? true : this.absolute;
+      this.absolute = this.absolute || absolute;
     }
   }
 
   @Override
   public void close() throws IOException {
     wrappedPostingsWriter.close();
-    assert (VERSION_CURRENT >= VERSION_META_ARRAY);
+    if (wrappedPostingsWriter instanceof TempPulsingPostingsWriter ||
+        VERSION_CURRENT < VERSION_META_ARRAY) {
+      return;
+    }
     String summaryFileName = IndexFileNames.segmentFileName(segmentState.segmentInfo.name, segmentState.segmentSuffix, SUMMARY_EXTENSION);
     IndexOutput out = null;
     try {

Modified: lucene/dev/branches/lucene3069/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.PostingsFormat
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3069/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.PostingsFormat?rev=1515695&r1=1515694&r2=1515695&view=diff
==============================================================================
--- lucene/dev/branches/lucene3069/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.PostingsFormat (original)
+++ lucene/dev/branches/lucene3069/lucene/codecs/src/resources/META-INF/services/org.apache.lucene.codecs.PostingsFormat Tue Aug 20 03:30:43 2013
@@ -22,3 +22,4 @@ org.apache.lucene.codecs.temp.TempBlockP
 org.apache.lucene.codecs.temp.TempPulsing41PostingsFormat
 org.apache.lucene.codecs.temp.TempFSTPulsing41PostingsFormat
 org.apache.lucene.codecs.temp.TempFSTOrdPulsing41PostingsFormat
+org.apache.lucene.codecs.temp.TempNestedPulsingPostingsFormat