You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2010/11/17 16:43:10 UTC

svn commit: r1036080 [1/4] - in /lucene/dev/branches/docvalues: ./ lucene/ lucene/contrib/ lucene/contrib/highlighter/src/test/ lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/ lucene/contrib/misc/src/java/org/apache/lucene/in...

Author: simonw
Date: Wed Nov 17 15:43:06 2010
New Revision: 1036080

URL: http://svn.apache.org/viewvc?rev=1036080&view=rev
Log:
catch up with trunk 

Added:
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/BoostAttribute.java
      - copied unchanged from r1036063, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/BoostAttribute.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/BoostAttributeImpl.java
      - copied unchanged from r1036063, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/BoostAttributeImpl.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/ConstantScoreAutoRewrite.java
      - copied unchanged from r1036063, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/ConstantScoreAutoRewrite.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/MaxNonCompetitiveBoostAttribute.java
      - copied unchanged from r1036063, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/MaxNonCompetitiveBoostAttribute.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/MaxNonCompetitiveBoostAttributeImpl.java
      - copied unchanged from r1036063, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/MaxNonCompetitiveBoostAttributeImpl.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/ScoringRewrite.java
      - copied unchanged from r1036063, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/ScoringRewrite.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/TermCollectingRewrite.java
      - copied unchanged from r1036063, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/TermCollectingRewrite.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/TopTermsRewrite.java
      - copied unchanged from r1036063, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/TopTermsRewrite.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java
      - copied unchanged from r1036063, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpanMultiTermQueryWrapper.java
      - copied unchanged from r1036063, lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestSpanMultiTermQueryWrapper.java
    lucene/dev/branches/docvalues/solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/StempelPolishStemFilterFactory.java
      - copied unchanged from r1036063, lucene/dev/trunk/solr/contrib/analysis-extras/src/java/org/apache/solr/analysis/StempelPolishStemFilterFactory.java
    lucene/dev/branches/docvalues/solr/contrib/analysis-extras/src/test/org/apache/solr/analysis/TestStempelPolishStemFilterFactory.java
      - copied unchanged from r1036063, lucene/dev/trunk/solr/contrib/analysis-extras/src/test/org/apache/solr/analysis/TestStempelPolishStemFilterFactory.java
    lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/util/SentinelIntSet.java
      - copied unchanged from r1036063, lucene/dev/trunk/solr/src/java/org/apache/solr/util/SentinelIntSet.java
Modified:
    lucene/dev/branches/docvalues/   (props changed)
    lucene/dev/branches/docvalues/lucene/   (props changed)
    lucene/dev/branches/docvalues/lucene/CHANGES.txt
    lucene/dev/branches/docvalues/lucene/MIGRATE.txt
    lucene/dev/branches/docvalues/lucene/build.xml   (props changed)
    lucene/dev/branches/docvalues/lucene/contrib/   (props changed)
    lucene/dev/branches/docvalues/lucene/contrib/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/docvalues/lucene/contrib/highlighter/src/test/   (props changed)
    lucene/dev/branches/docvalues/lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestIndicesEquals.java   (props changed)
    lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingCodec.java
    lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingTermsDictReader.java
    lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingTermsIndexReader.java
    lucene/dev/branches/docvalues/lucene/contrib/misc/src/test/org/apache/lucene/index/codecs/appending/TestAppendingCodec.java
    lucene/dev/branches/docvalues/lucene/contrib/queries/src/java/org/apache/lucene/search/FuzzyLikeThisQuery.java
    lucene/dev/branches/docvalues/lucene/contrib/queries/src/java/org/apache/lucene/search/regex/SpanRegexQuery.java
    lucene/dev/branches/docvalues/lucene/contrib/queries/src/test/org/apache/lucene/search/regex/TestSpanRegexQuery.java
    lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/SingleFieldTestDb.java
    lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/Test02Boolean.java
    lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/Test03Distance.java
    lucene/dev/branches/docvalues/lucene/contrib/spellchecker/src/java/org/apache/lucene/search/spell/DirectSpellChecker.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/analysis/Tokenizer.java   (props changed)
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/IndexFileDeleter.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/IndexWriter.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/PerFieldCodecWrapper.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentCodecs.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentReadState.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentWriteState.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/Codec.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexReader.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexWriter.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/PrefixCodedTermsReader.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/PrefixCodedTermsWriter.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesCodec.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesConsumer.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesProducerBase.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/preflex/PreFlexCodec.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/pulsing/PulsingCodec.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/sep/SepPostingsReaderImpl.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/sep/SepPostingsWriterImpl.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextCodec.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsReader.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsWriter.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/standard/StandardCodec.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/standard/StandardPostingsReader.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/standard/StandardPostingsWriter.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/BooleanQuery.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/FieldComparator.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/FuzzyTermsEnum.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/MultiTermQuery.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java   (props changed)
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/spans/SpanFirstQuery.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/spans/SpanNearPayloadCheckQuery.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/spans/SpanOrQuery.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/spans/SpanPayloadCheckQuery.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/spans/SpanPositionCheckQuery.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/search/spans/SpanPositionRangeQuery.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/store/DataInput.java
    lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/store/DataOutput.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/TestExternalCodecs.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/document/TestDateTools.java   (props changed)
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/document/TestNumberTools.java   (props changed)
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestAddIndexes.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestAtomicUpdate.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java   (props changed)
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexReader.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexWriterDelete.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexWriterExceptions.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexWriterOnDiskFull.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestIndexWriterReader.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestLazyProxSkipping.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestMultiLevelSkipList.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestPerFieldCodecSupport.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestTermVectorsWriter.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestThreadedOptimize.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/TestTransactions.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mockintblock/MockFixedIntBlockCodec.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mockintblock/MockVariableIntBlockCodec.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/index/codecs/mocksep/MockSepCodec.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/CheckHits.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/QueryUtils.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBoolean2.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBooleanMinShouldMatch.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestBooleanOr.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestDisjunctionMaxQuery.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestExplanations.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestFilteredQuery.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestMultiTermQueryRewrites.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/TestPhraseQuery.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestCustomScoreQuery.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestFieldScoreQuery.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/function/TestOrdValues.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/PayloadHelper.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestBasics.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestFieldMaskingSpanQuery.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestNearSpansOrdered.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/search/spans/TestSpansAdvanced.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockDirectoryWrapper.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexInputWrapper.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/MockIndexOutputWrapper.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestLockFactory.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/store/TestRAMDirectory.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestAttributeSource.java   (props changed)
    lucene/dev/branches/docvalues/lucene/src/test/org/apache/lucene/util/TestBitVector.java
    lucene/dev/branches/docvalues/modules/analysis/common/src/test/org/apache/lucene/analysis/miscellaneous/TestISOLatin1AccentFilter.java   (props changed)
    lucene/dev/branches/docvalues/modules/analysis/stempel/src/java/org/apache/lucene/analysis/pl/PolishAnalyzer.java
    lucene/dev/branches/docvalues/modules/analysis/stempel/src/java/org/apache/lucene/analysis/stempel/StempelStemmer.java
    lucene/dev/branches/docvalues/solr/   (props changed)
    lucene/dev/branches/docvalues/solr/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/docvalues/solr/KEYS   (props changed)
    lucene/dev/branches/docvalues/solr/LICENSE.txt   (props changed)
    lucene/dev/branches/docvalues/solr/NOTICE.txt   (props changed)
    lucene/dev/branches/docvalues/solr/README.txt   (props changed)
    lucene/dev/branches/docvalues/solr/build.xml   (props changed)
    lucene/dev/branches/docvalues/solr/client/   (props changed)
    lucene/dev/branches/docvalues/solr/common-build.xml   (props changed)
    lucene/dev/branches/docvalues/solr/contrib/   (props changed)
    lucene/dev/branches/docvalues/solr/example/   (props changed)
    lucene/dev/branches/docvalues/solr/lib/   (props changed)
    lucene/dev/branches/docvalues/solr/lib/commons-httpclient-3.1.jar   (props changed)
    lucene/dev/branches/docvalues/solr/lib/jcl-over-slf4j-1.5.5.jar   (props changed)
    lucene/dev/branches/docvalues/solr/site/   (props changed)
    lucene/dev/branches/docvalues/solr/src/   (props changed)
    lucene/dev/branches/docvalues/solr/src/common/org/apache/solr/common/   (props changed)
    lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/Grouping.java
    lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/MissingStringLastComparatorSource.java
    lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/StringIndexDocValues.java
    lucene/dev/branches/docvalues/solr/src/maven/solr-core-pom.xml.template   (props changed)
    lucene/dev/branches/docvalues/solr/src/maven/solr-solrj-pom.xml.template   (props changed)
    lucene/dev/branches/docvalues/solr/src/solrj/org/   (props changed)
    lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/JSONTestUtil.java
    lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/SolrTestCaseJ4.java
    lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestGroupingSearch.java
    lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/   (props changed)
    lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/cloud/CloudStateUpdateTest.java
    lucene/dev/branches/docvalues/solr/src/webapp/src/org/apache/solr/client/solrj/embedded/   (props changed)
    lucene/dev/branches/docvalues/solr/src/webapp/src/org/apache/solr/servlet/DirectSolrConnection.java
    lucene/dev/branches/docvalues/solr/testlogging.properties   (props changed)

Modified: lucene/dev/branches/docvalues/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/CHANGES.txt?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/docvalues/lucene/CHANGES.txt Wed Nov 17 15:43:06 2010
@@ -295,6 +295,10 @@ New features
   resolved without knowing the actual codec used for writing the segment.
   (Simon Willnauer)
 
+* LUCENE-2741: Add support for multiple codecs that use the same file
+  extensions within the same segment. Codecs now use their per-segment codec
+  ID in the file names. (Simon Willnauer)
+
 Optimizations
 
 * LUCENE-2410: ~20% speedup on exact (slop=0) PhraseQuery matching.
@@ -716,6 +720,10 @@ New features
 * LUCENE-2671: Add SortField.setMissingValue( v ) to enable sorting
   behavior for documents that do not include the given field. (ryan)
 
+* LUCENE-2754, LUCENE-2757: Added a wrapper around MultiTermQueries
+  to add span support: SpanMultiTermQueryWrapper<Q extends MultiTermQuery>.
+  Using this wrapper its easy to add fuzzy/wildcard to e.g. a SpanNearQuery.
+  (Robert Muir, Uwe Schindler)
   
 Optimizations
 
@@ -793,6 +801,9 @@ Optimizations
   by the improved SorterTemplate class.
   (Uwe Schindler, Robert Muir, Mike McCandless)
 
+* LUCENE-2760: Optimize SpanFirstQuery and SpanPositionRangeQuery.
+  (Robert Muir)
+
 Build
 
 * LUCENE-2124: Moved the JDK-based collation support from contrib/collation 

Modified: lucene/dev/branches/docvalues/lucene/MIGRATE.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/MIGRATE.txt?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/MIGRATE.txt (original)
+++ lucene/dev/branches/docvalues/lucene/MIGRATE.txt Wed Nov 17 15:43:06 2010
@@ -324,3 +324,7 @@ LUCENE-1458, LUCENE-2111: Flexible Index
   The other way round MTQ.TopTermsBooleanQueryRewrite supplys a
   global AttributeSource to each segments TermsEnum. The TermsEnum is consumer
   and gets the current minimum competitive boosts (MTQ.MaxNonCompetitiveBoostAttribute).
+
+* LUCENE-2761: DataInput.readVInt/readVLong and DataOutput.writeVInt/writeVLong
+  are final. If you subclassed this code before to encode variable-length
+  integers in some specialized way, use the Codec API instead.

Modified: lucene/dev/branches/docvalues/lucene/contrib/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/contrib/CHANGES.txt?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/contrib/CHANGES.txt (original)
+++ lucene/dev/branches/docvalues/lucene/contrib/CHANGES.txt Wed Nov 17 15:43:06 2010
@@ -177,6 +177,10 @@ API Changes
    QueryNodeProcessorPipeline now implements the List interface, this is useful
    if you want to extend or modify an existing pipeline. (Adriano Crestani via Robert Muir)
     
+ * LUCENE-2754, LUCENE-2757: Deprecated SpanRegexQuery. Use
+   new SpanMultiTermQueryWrapper<RegexQuery>(new RegexQuery()) instead.
+   (Robert Muir, Uwe Schindler)
+
 New features
 
  * LUCENE-2306: Add NumericRangeFilter and NumericRangeQuery support to XMLQueryParser.

Modified: lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingCodec.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingCodec.java (original)
+++ lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingCodec.java Wed Nov 17 15:43:06 2010
@@ -1,6 +1,6 @@
 package org.apache.lucene.index.codecs.appending;
 
-/*
+/**
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
@@ -88,7 +88,7 @@ public class AppendingCodec extends Code
   @Override
   public FieldsProducer fieldsProducer(SegmentReadState state)
           throws IOException {
-    PostingsReaderBase docsReader = new StandardPostingsReader(state.dir, state.segmentInfo, state.readBufferSize);
+    PostingsReaderBase docsReader = new StandardPostingsReader(state.dir, state.segmentInfo, state.readBufferSize, state.codecId);
     TermsIndexReaderBase indexReader;
 
     boolean success = false;
@@ -97,7 +97,8 @@ public class AppendingCodec extends Code
               state.fieldInfos,
               state.segmentInfo.name,
               state.termsIndexDivisor,
-              BytesRef.getUTF8SortedAsUnicodeComparator());
+              BytesRef.getUTF8SortedAsUnicodeComparator(),
+              state.codecId);
       success = true;
     } finally {
       if (!success) {
@@ -111,7 +112,8 @@ public class AppendingCodec extends Code
               docsReader,
               state.readBufferSize,
               BytesRef.getUTF8SortedAsUnicodeComparator(),
-              StandardCodec.TERMS_CACHE_SIZE);
+              StandardCodec.TERMS_CACHE_SIZE,
+              state.codecId);
       success = true;
       return ret;
     } finally {
@@ -126,11 +128,11 @@ public class AppendingCodec extends Code
   }
 
   @Override
-  public void files(Directory dir, SegmentInfo segmentInfo, Set<String> files)
+  public void files(Directory dir, SegmentInfo segmentInfo, String codecId, Set<String> files)
           throws IOException {
-    StandardPostingsReader.files(dir, segmentInfo, files);
-    PrefixCodedTermsReader.files(dir, segmentInfo, files);
-    FixedGapTermsIndexReader.files(dir, segmentInfo, files);
+    StandardPostingsReader.files(dir, segmentInfo, codecId, files);
+    PrefixCodedTermsReader.files(dir, segmentInfo, codecId, files);
+    FixedGapTermsIndexReader.files(dir, segmentInfo, codecId, files);
   }
 
   @Override

Modified: lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingTermsDictReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingTermsDictReader.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingTermsDictReader.java (original)
+++ lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingTermsDictReader.java Wed Nov 17 15:43:06 2010
@@ -35,9 +35,9 @@ public class AppendingTermsDictReader ex
   public AppendingTermsDictReader(TermsIndexReaderBase indexReader,
           Directory dir, FieldInfos fieldInfos, String segment,
           PostingsReaderBase postingsReader, int readBufferSize,
-          Comparator<BytesRef> termComp, int termsCacheSize) throws IOException {
+          Comparator<BytesRef> termComp, int termsCacheSize, String codecId) throws IOException {
     super(indexReader, dir, fieldInfos, segment, postingsReader, readBufferSize,
-            termComp, termsCacheSize);
+            termComp, termsCacheSize, codecId);
   }
   
   @Override

Modified: lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingTermsIndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingTermsIndexReader.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingTermsIndexReader.java (original)
+++ lucene/dev/branches/docvalues/lucene/contrib/misc/src/java/org/apache/lucene/index/codecs/appending/AppendingTermsIndexReader.java Wed Nov 17 15:43:06 2010
@@ -30,9 +30,9 @@ import org.apache.lucene.util.CodecUtil;
 public class AppendingTermsIndexReader extends FixedGapTermsIndexReader {
 
   public AppendingTermsIndexReader(Directory dir, FieldInfos fieldInfos,
-          String segment, int indexDivisor, Comparator<BytesRef> termComp)
+          String segment, int indexDivisor, Comparator<BytesRef> termComp, String codecId)
           throws IOException {
-    super(dir, fieldInfos, segment, indexDivisor, termComp);
+    super(dir, fieldInfos, segment, indexDivisor, termComp, codecId);
   }
   
   @Override

Modified: lucene/dev/branches/docvalues/lucene/contrib/misc/src/test/org/apache/lucene/index/codecs/appending/TestAppendingCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/contrib/misc/src/test/org/apache/lucene/index/codecs/appending/TestAppendingCodec.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/contrib/misc/src/test/org/apache/lucene/index/codecs/appending/TestAppendingCodec.java (original)
+++ lucene/dev/branches/docvalues/lucene/contrib/misc/src/test/org/apache/lucene/index/codecs/appending/TestAppendingCodec.java Wed Nov 17 15:43:06 2010
@@ -18,6 +18,7 @@ package org.apache.lucene.index.codecs.a
  */
 
 import java.io.IOException;
+import java.util.Random;
 
 import org.apache.lucene.analysis.MockAnalyzer;
 import org.apache.lucene.document.Document;
@@ -118,8 +119,8 @@ public class TestAppendingCodec extends 
   @SuppressWarnings("serial")
   private static class AppendingRAMDirectory extends MockDirectoryWrapper {
 
-    public AppendingRAMDirectory(Directory delegate) {
-      super(delegate);
+    public AppendingRAMDirectory(Random random, Directory delegate) {
+      super(random, delegate);
     }
 
     @Override
@@ -132,7 +133,7 @@ public class TestAppendingCodec extends 
   private static final String text = "the quick brown fox jumped over the lazy dog";
 
   public void testCodec() throws Exception {
-    Directory dir = new AppendingRAMDirectory(new RAMDirectory());
+    Directory dir = new AppendingRAMDirectory(random, new RAMDirectory());
     IndexWriterConfig cfg = new IndexWriterConfig(Version.LUCENE_40, new MockAnalyzer());
     
     cfg.setCodecProvider(new AppendingCodecProvider());

Modified: lucene/dev/branches/docvalues/lucene/contrib/queries/src/java/org/apache/lucene/search/FuzzyLikeThisQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/contrib/queries/src/java/org/apache/lucene/search/FuzzyLikeThisQuery.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/contrib/queries/src/java/org/apache/lucene/search/FuzzyLikeThisQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/contrib/queries/src/java/org/apache/lucene/search/FuzzyLikeThisQuery.java Wed Nov 17 15:43:06 2010
@@ -201,16 +201,16 @@ public class FuzzyLikeThisQuery extends 
                   float minScore=0;
                   Term startTerm=internSavingTemplateTerm.createTerm(term);
                   AttributeSource atts = new AttributeSource();
-                  MultiTermQuery.MaxNonCompetitiveBoostAttribute maxBoostAtt =
-                    atts.addAttribute(MultiTermQuery.MaxNonCompetitiveBoostAttribute.class);
+                  MaxNonCompetitiveBoostAttribute maxBoostAtt =
+                    atts.addAttribute(MaxNonCompetitiveBoostAttribute.class);
                   FuzzyTermsEnum fe = new FuzzyTermsEnum(reader, atts, startTerm, f.minSimilarity, f.prefixLength);
                   //store the df so all variants use same idf
                   int df = reader.docFreq(startTerm);
                   int numVariants=0;
                   int totalVariantDocFreqs=0;
                   BytesRef possibleMatch;
-                  MultiTermQuery.BoostAttribute boostAtt =
-                    fe.attributes().addAttribute(MultiTermQuery.BoostAttribute.class);
+                  BoostAttribute boostAtt =
+                    fe.attributes().addAttribute(BoostAttribute.class);
                   while ((possibleMatch = fe.next()) != null) {
                       if (possibleMatch!=null) {
                         numVariants++;

Modified: lucene/dev/branches/docvalues/lucene/contrib/queries/src/java/org/apache/lucene/search/regex/SpanRegexQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/contrib/queries/src/java/org/apache/lucene/search/regex/SpanRegexQuery.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/contrib/queries/src/java/org/apache/lucene/search/regex/SpanRegexQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/contrib/queries/src/java/org/apache/lucene/search/regex/SpanRegexQuery.java Wed Nov 17 15:43:06 2010
@@ -18,115 +18,29 @@ package org.apache.lucene.search.regex;
  */
 
 import org.apache.lucene.index.Term;
-import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.search.MultiTermQuery;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.TermQuery;
-import org.apache.lucene.search.spans.SpanOrQuery;
-import org.apache.lucene.search.spans.SpanQuery;
-import org.apache.lucene.search.spans.SpanTermQuery;
-import org.apache.lucene.search.spans.Spans;
-import org.apache.lucene.util.ToStringUtils;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.ArrayList;
+import org.apache.lucene.search.spans.SpanMultiTermQueryWrapper;
 
 /**
  * A SpanQuery version of {@link RegexQuery} allowing regular expression
  * queries to be nested within other SpanQuery subclasses.
+ * @deprecated Use <code>new SpanMultiTermQueryWrapper&lt;RegexQuery&gt;(new RegexQuery())</code> instead.
+ * This query will be removed in Lucene 4.0
  */
-public class SpanRegexQuery extends SpanQuery implements RegexQueryCapable {
-  private RegexCapabilities regexImpl = new JavaUtilRegexCapabilities();
-  private Term term;
+@Deprecated
+public class SpanRegexQuery extends SpanMultiTermQueryWrapper<RegexQuery> implements RegexQueryCapable {
+  private final RegexCapabilities regexImpl = new JavaUtilRegexCapabilities();
 
   public SpanRegexQuery(Term term) {
-    this.term = term;
+    super(new RegexQuery(term));
   }
 
-  public Term getTerm() { return term; }
-
-  @Override
-  public Query rewrite(IndexReader reader) throws IOException {
-    RegexQuery orig = new RegexQuery(term);
-    orig.setRegexImplementation(regexImpl);
-    orig.setRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE);
-    BooleanQuery bq = (BooleanQuery) orig.rewrite(reader);
-
-    BooleanClause[] clauses = bq.getClauses();
-    SpanQuery[] sqs = new SpanQuery[clauses.length];
-    for (int i = 0; i < clauses.length; i++) {
-      BooleanClause clause = clauses[i];
-
-      // Clauses from RegexQuery.rewrite are always TermQuery's
-      TermQuery tq = (TermQuery) clause.getQuery();
-
-      sqs[i] = new SpanTermQuery(tq.getTerm());
-      sqs[i].setBoost(tq.getBoost());
-    }
-
-    SpanOrQuery query = new SpanOrQuery(sqs);
-    query.setBoost(orig.getBoost());
-
-    return query;
-  }
-
-  @Override
-  public Spans getSpans(IndexReader reader) throws IOException {
-    throw new UnsupportedOperationException("Query should have been rewritten");
-  }
-
-  @Override
-  public String getField() {
-    return term.field();
-  }
-
-  public Collection<Term> getTerms() {
-    Collection<Term> terms = new ArrayList<Term>();
-    terms.add(term);
-    return terms;
-  }
-
-  /* generated by IntelliJ IDEA */
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
-
-    final SpanRegexQuery that = (SpanRegexQuery) o;
-
-    if (!regexImpl.equals(that.regexImpl)) return false;
-    if (!term.equals(that.term)) return false;
-
-    return true;
-  }
-
-  /* generated by IntelliJ IDEA */
-  @Override
-  public int hashCode() {
-    int result;
-    result = regexImpl.hashCode();
-    result = 29 * result + term.hashCode();
-    return result;
-  }
-
-  @Override
-  public String toString(String field) {
-    StringBuilder buffer = new StringBuilder();
-    buffer.append("spanRegexQuery(");
-    buffer.append(term);
-    buffer.append(")");
-    buffer.append(ToStringUtils.boost(getBoost()));
-    return buffer.toString();
-  }
+  public Term getTerm() { return query.getTerm(); }
 
   public void setRegexImplementation(RegexCapabilities impl) {
-    this.regexImpl = impl;
+    query.setRegexImplementation(impl);
   }
 
   public RegexCapabilities getRegexImplementation() {
-    return regexImpl;
+    return query.getRegexImplementation();
   }
 }

Modified: lucene/dev/branches/docvalues/lucene/contrib/queries/src/test/org/apache/lucene/search/regex/TestSpanRegexQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/contrib/queries/src/test/org/apache/lucene/search/regex/TestSpanRegexQuery.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/contrib/queries/src/test/org/apache/lucene/search/regex/TestSpanRegexQuery.java (original)
+++ lucene/dev/branches/docvalues/lucene/contrib/queries/src/test/org/apache/lucene/search/regex/TestSpanRegexQuery.java Wed Nov 17 15:43:06 2010
@@ -29,6 +29,7 @@ import org.apache.lucene.index.IndexWrit
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.MultiSearcher;
 import org.apache.lucene.search.spans.SpanFirstQuery;
+import org.apache.lucene.search.spans.SpanMultiTermQueryWrapper;
 import org.apache.lucene.search.spans.SpanNearQuery;
 import org.apache.lucene.search.spans.SpanQuery;
 import org.apache.lucene.store.Directory;
@@ -74,6 +75,65 @@ public class TestSpanRegexQuery extends 
     writer.close();
 
     IndexSearcher searcher = new IndexSearcher(directory, true);
+    SpanQuery srq = new SpanMultiTermQueryWrapper<RegexQuery>(new RegexQuery(new Term("field", "aut.*")));
+    SpanFirstQuery sfq = new SpanFirstQuery(srq, 1);
+    // SpanNearQuery query = new SpanNearQuery(new SpanQuery[] {srq, stq}, 6,
+    // true);
+    int numHits = searcher.search(sfq, null, 1000).totalHits;
+    assertEquals(1, numHits);
+    searcher.close();
+    directory.close();
+  }
+  
+  public void testSpanRegexBug() throws CorruptIndexException, IOException {
+    createRAMDirectories();
+
+    SpanQuery srq = new SpanMultiTermQueryWrapper<RegexQuery>(new RegexQuery(new Term("field", "a.*")));
+    SpanQuery stq = new SpanMultiTermQueryWrapper<RegexQuery>(new RegexQuery(new Term("field", "b.*")));
+    SpanNearQuery query = new SpanNearQuery(new SpanQuery[] { srq, stq }, 6,
+        true);
+
+    // 1. Search the same store which works
+    IndexSearcher[] arrSearcher = new IndexSearcher[2];
+    arrSearcher[0] = new IndexSearcher(indexStoreA, true);
+    arrSearcher[1] = new IndexSearcher(indexStoreB, true);
+    MultiSearcher searcher = new MultiSearcher(arrSearcher);
+    int numHits = searcher.search(query, null, 1000).totalHits;
+    arrSearcher[0].close();
+    arrSearcher[1].close();
+
+    // Will fail here
+    // We expect 2 but only one matched
+    // The rewriter function only write it once on the first IndexSearcher
+    // So it's using term: a1 b1 to search on the second IndexSearcher
+    // As a result, it won't match the document in the second IndexSearcher
+    assertEquals(2, numHits);
+    indexStoreA.close();
+    indexStoreB.close();
+  }
+  
+  /** remove in lucene 4.0 */
+  @Deprecated
+  public void testSpanRegexOld() throws Exception {
+    Directory directory = newDirectory();
+    IndexWriter writer = new IndexWriter(directory, newIndexWriterConfig(
+        TEST_VERSION_CURRENT, new MockAnalyzer()));
+    Document doc = new Document();
+    // doc.add(newField("field", "the quick brown fox jumps over the lazy dog",
+    // Field.Store.NO, Field.Index.ANALYZED));
+    // writer.addDocument(doc);
+    // doc = new Document();
+    doc.add(newField("field", "auto update", Field.Store.NO,
+        Field.Index.ANALYZED));
+    writer.addDocument(doc);
+    doc = new Document();
+    doc.add(newField("field", "first auto update", Field.Store.NO,
+        Field.Index.ANALYZED));
+    writer.addDocument(doc);
+    writer.optimize();
+    writer.close();
+
+    IndexSearcher searcher = new IndexSearcher(directory, true);
     SpanRegexQuery srq = new SpanRegexQuery(new Term("field", "aut.*"));
     SpanFirstQuery sfq = new SpanFirstQuery(srq, 1);
     // SpanNearQuery query = new SpanNearQuery(new SpanQuery[] {srq, stq}, 6,
@@ -84,7 +144,9 @@ public class TestSpanRegexQuery extends 
     directory.close();
   }
 
-  public void testSpanRegexBug() throws CorruptIndexException, IOException {
+  /** remove in lucene 4.0 */
+  @Deprecated
+  public void testSpanRegexBugOld() throws CorruptIndexException, IOException {
     createRAMDirectories();
 
     SpanRegexQuery srq = new SpanRegexQuery(new Term("field", "a.*"));

Modified: lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/SingleFieldTestDb.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/SingleFieldTestDb.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/SingleFieldTestDb.java (original)
+++ lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/SingleFieldTestDb.java Wed Nov 17 15:43:06 2010
@@ -17,6 +17,8 @@ package org.apache.lucene.queryParser.su
  * limitations under the License.
  */
 
+import java.util.Random;
+
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.MockDirectoryWrapper;
 import org.apache.lucene.store.RAMDirectory;
@@ -32,9 +34,9 @@ public class SingleFieldTestDb {
   private String[] docs;
   private String fieldName;
   
-  public SingleFieldTestDb(String[] documents, String fName) {
+  public SingleFieldTestDb(Random random, String[] documents, String fName) {
     try {
-      db = new MockDirectoryWrapper(new RAMDirectory());
+      db = new MockDirectoryWrapper(random, new RAMDirectory());
       docs = documents;
       fieldName = fName;
       IndexWriter writer = new IndexWriter(db, new IndexWriterConfig(

Modified: lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/Test02Boolean.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/Test02Boolean.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/Test02Boolean.java (original)
+++ lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/Test02Boolean.java Wed Nov 17 15:43:06 2010
@@ -39,7 +39,7 @@ public class Test02Boolean extends Lucen
     "a c e a b c"
   };
 
-  SingleFieldTestDb db1 = new SingleFieldTestDb(docs1, fieldName);
+  SingleFieldTestDb db1 = new SingleFieldTestDb(random, docs1, fieldName);
 
   public void normalTest1(String query, int[] expdnrs) throws Exception {
     BooleanQueryTst bqt = new BooleanQueryTst( query, expdnrs, db1, fieldName, this,

Modified: lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/Test03Distance.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/Test03Distance.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/Test03Distance.java (original)
+++ lucene/dev/branches/docvalues/lucene/contrib/queryparser/src/test/org/apache/lucene/queryParser/surround/query/Test03Distance.java Wed Nov 17 15:43:06 2010
@@ -58,7 +58,7 @@ public class Test03Distance extends Luce
     "a c e a b c"
   };
 
-  SingleFieldTestDb db1 = new SingleFieldTestDb(docs1, fieldName);
+  SingleFieldTestDb db1 = new SingleFieldTestDb(random, docs1, fieldName);
 
   private void distanceTst(String query, int[] expdnrs, SingleFieldTestDb db) throws Exception {
     BooleanQueryTst bqt = new BooleanQueryTst( query, expdnrs, db, fieldName, this,
@@ -179,7 +179,7 @@ public class Test03Distance extends Luce
     ""
   };
 
-  SingleFieldTestDb db2 = new SingleFieldTestDb(docs2, fieldName);
+  SingleFieldTestDb db2 = new SingleFieldTestDb(random, docs2, fieldName);
   
   public void distanceTest2(String query, int[] expdnrs) throws Exception {
     distanceTst(query, expdnrs, db2);
@@ -227,7 +227,7 @@ public class Test03Distance extends Luce
     ""
   };
 
-  SingleFieldTestDb db3 = new SingleFieldTestDb(docs3, fieldName);
+  SingleFieldTestDb db3 = new SingleFieldTestDb(random, docs3, fieldName);
 
   public void distanceTest3(String query, int[] expdnrs) throws Exception {
     distanceTst(query, expdnrs, db3);

Modified: lucene/dev/branches/docvalues/lucene/contrib/spellchecker/src/java/org/apache/lucene/search/spell/DirectSpellChecker.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/contrib/spellchecker/src/java/org/apache/lucene/search/spell/DirectSpellChecker.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/contrib/spellchecker/src/java/org/apache/lucene/search/spell/DirectSpellChecker.java (original)
+++ lucene/dev/branches/docvalues/lucene/contrib/spellchecker/src/java/org/apache/lucene/search/spell/DirectSpellChecker.java Wed Nov 17 15:43:06 2010
@@ -28,7 +28,8 @@ import java.util.PriorityQueue;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.FuzzyTermsEnum;
-import org.apache.lucene.search.MultiTermQuery;
+import org.apache.lucene.search.BoostAttribute;
+import org.apache.lucene.search.MaxNonCompetitiveBoostAttribute;
 import org.apache.lucene.util.ArrayUtil;
 import org.apache.lucene.util.AttributeSource;
 import org.apache.lucene.util.BytesRef;
@@ -389,16 +390,16 @@ public class DirectSpellChecker {
       IndexReader ir, int docfreq, int editDistance, float accuracy) throws IOException {
     
     AttributeSource atts = new AttributeSource();
-    MultiTermQuery.MaxNonCompetitiveBoostAttribute maxBoostAtt =
-      atts.addAttribute(MultiTermQuery.MaxNonCompetitiveBoostAttribute.class);
+    MaxNonCompetitiveBoostAttribute maxBoostAtt =
+      atts.addAttribute(MaxNonCompetitiveBoostAttribute.class);
     FuzzyTermsEnum e = new FuzzyTermsEnum(ir, atts, term, editDistance, Math.max(minPrefix, editDistance-1));
     final PriorityQueue<ScoreTerm> stQueue = new PriorityQueue<ScoreTerm>();
     
     BytesRef queryTerm = new BytesRef(term.text());
     BytesRef candidateTerm;
     ScoreTerm st = new ScoreTerm();
-    MultiTermQuery.BoostAttribute boostAtt =
-      e.attributes().addAttribute(MultiTermQuery.BoostAttribute.class);
+    BoostAttribute boostAtt =
+      e.attributes().addAttribute(BoostAttribute.class);
     while ((candidateTerm = e.next()) != null) {
       final float boost = boostAtt.getBoost();
       // ignore uncompetitive hits

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/IndexFileDeleter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/IndexFileDeleter.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/IndexFileDeleter.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/IndexFileDeleter.java Wed Nov 17 15:43:06 2010
@@ -602,13 +602,13 @@ final class IndexFileDeleter {
       if (!initDone) {
         initDone = true;
       } else {
-        assert count > 0: "RefCount is 0 pre-increment for file \"" + fileName + "\"";
+        assert count > 0: Thread.currentThread().getName() + ": RefCount is 0 pre-increment for file \"" + fileName + "\"";
       }
       return ++count;
     }
 
     public int DecRef() {
-      assert count > 0: "RefCount is 0 pre-decrement for file \"" + fileName + "\"";
+      assert count > 0: Thread.currentThread().getName() + ": RefCount is 0 pre-decrement for file \"" + fileName + "\"";
       return --count;
     }
   }

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/IndexWriter.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/IndexWriter.java Wed Nov 17 15:43:06 2010
@@ -286,6 +286,7 @@ public class IndexWriter implements Clos
   private IndexFileDeleter deleter;
 
   private Set<SegmentInfo> segmentsToOptimize = new HashSet<SegmentInfo>();           // used by optimize to note those needing optimization
+  private int optimizeMaxNumSegments;
 
   private Lock writeLock;
 
@@ -2379,6 +2380,7 @@ public class IndexWriter implements Clos
     synchronized(this) {
       resetMergeExceptions();
       segmentsToOptimize = new HashSet<SegmentInfo>(segmentInfos);
+      optimizeMaxNumSegments = maxNumSegments;
       
       // Now mark all pending & running merges as optimize
       // merge:
@@ -2579,8 +2581,9 @@ public class IndexWriter implements Clos
     throws CorruptIndexException, IOException {
     assert !optimize || maxNumSegmentsOptimize > 0;
 
-    if (stopMerges)
+    if (stopMerges) {
       return;
+    }
 
     // Do not start new merges if we've hit OOME
     if (hitOOM) {
@@ -2594,19 +2597,21 @@ public class IndexWriter implements Clos
       if (spec != null) {
         final int numMerges = spec.merges.size();
         for(int i=0;i<numMerges;i++) {
-          final MergePolicy.OneMerge merge = ( spec.merges.get(i));
+          final MergePolicy.OneMerge merge = spec.merges.get(i);
           merge.optimize = true;
           merge.maxNumSegmentsOptimize = maxNumSegmentsOptimize;
         }
       }
 
-    } else
+    } else {
       spec = mergePolicy.findMerges(segmentInfos);
+    }
 
     if (spec != null) {
       final int numMerges = spec.merges.size();
-      for(int i=0;i<numMerges;i++)
+      for(int i=0;i<numMerges;i++) {
         registerMerge(spec.merges.get(i));
+      }
     }
   }
 
@@ -3044,7 +3049,9 @@ public class IndexWriter implements Clos
               checkpoint();
             }
           } finally {
-            deleter.decRef(files);
+            synchronized(this) {
+              deleter.decRef(files);
+            }
           }
         }
       }
@@ -3613,8 +3620,10 @@ public class IndexWriter implements Clos
     // disk, updating SegmentInfo, etc.:
     readerPool.clear(merge.segments);
 
-    if (merge.optimize)
+    if (merge.optimize) {
+      // cascade the optimize:
       segmentsToOptimize.add(merge.info);
+    }
     return true;
   }
   
@@ -3732,12 +3741,19 @@ public class IndexWriter implements Clos
     boolean isExternal = false;
     for(int i=0;i<count;i++) {
       final SegmentInfo info = merge.segments.info(i);
-      if (mergingSegments.contains(info))
+      if (mergingSegments.contains(info)) {
         return false;
-      if (segmentInfos.indexOf(info) == -1)
+      }
+      if (segmentInfos.indexOf(info) == -1) {
         return false;
-      if (info.dir != directory)
+      }
+      if (info.dir != directory) {
         isExternal = true;
+      }
+      if (segmentsToOptimize.contains(info)) {
+        merge.optimize = true;
+        merge.maxNumSegmentsOptimize = optimizeMaxNumSegments;
+      }
     }
 
     ensureContiguousMerge(merge);
@@ -4239,7 +4255,9 @@ public class IndexWriter implements Clos
       if (merge.isAborted()) {
         if (infoStream != null)
           message("abort merge after building CFS");
-        deleter.deleteFile(compoundFileName);
+        synchronized(this) {
+          deleter.deleteFile(compoundFileName);
+        }
         return 0;
       }
 

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/PerFieldCodecWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/PerFieldCodecWrapper.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/PerFieldCodecWrapper.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/PerFieldCodecWrapper.java Wed Nov 17 15:43:06 2010
@@ -63,9 +63,7 @@ final class PerFieldCodecWrapper extends
       assert segmentCodecs == state.segmentCodecs;
       final Codec[] codecs = segmentCodecs.codecs;
       for (int i = 0; i < codecs.length; i++) {
-        state.currentCodecId = i; // actual codec should use that to create its
-                                  // files
-        consumers.add(codecs[i].fieldsConsumer(state));
+        consumers.add(codecs[i].fieldsConsumer(new SegmentWriteState(state, "" + i)));
       }
     }
 
@@ -119,7 +117,7 @@ final class PerFieldCodecWrapper extends
           Codec codec = segmentCodecs.codecs[fi.codecId];
           if (!producers.containsKey(codec)) {
             producers.put(codec, codec.fieldsProducer(new SegmentReadState(dir,
-                si, fieldInfos, readBufferSize, indexDivisor)));
+                si, fieldInfos, readBufferSize, indexDivisor, ""+fi.codecId)));
           }
           codecs.put(fi.name, producers.get(codec));
         }
@@ -215,8 +213,9 @@ final class PerFieldCodecWrapper extends
   }
 
   @Override
-  public void files(Directory dir, SegmentInfo info, Set<String> files)
+  public void files(Directory dir, SegmentInfo info, String codecId, Set<String> files)
       throws IOException {
+    // ignore codecid sicne segmentCodec will assign it per codec
     segmentCodecs.files(dir, info, files);
   }
 

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentCodecs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentCodecs.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentCodecs.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentCodecs.java Wed Nov 17 15:43:06 2010
@@ -18,7 +18,6 @@ package org.apache.lucene.index;
  */
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.IdentityHashMap;
 import java.util.Map;
 import java.util.Set;
@@ -120,14 +119,11 @@ final class SegmentCodecs implements Clo
 
   void files(Directory dir, SegmentInfo info, Set<String> files)
       throws IOException {
-    final Set<Codec> seen = new HashSet<Codec>();
     final Codec[] codecArray = codecs;
-    for (Codec codec : codecArray) {
-      if (!seen.contains(codec)) {
-        seen.add(codec);
-        codec.files(dir, info, files);
-      }
-    }
+    for (int i = 0; i < codecArray.length; i++) {
+      codecArray[i].files(dir, info, ""+i, files);
+    }      
+      
   }
 
   @Override

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentReadState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentReadState.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentReadState.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentReadState.java Wed Nov 17 15:43:06 2010
@@ -34,16 +34,24 @@ public class SegmentReadState {
   // that must do so), then it should negate this value to
   // get the app's terms divisor:
   public final int termsIndexDivisor;
+  public final String codecId;
 
+  public SegmentReadState(Directory dir, SegmentInfo info,
+      FieldInfos fieldInfos, int readBufferSize, int termsIndexDivisor) {
+    this(dir, info, fieldInfos, readBufferSize, termsIndexDivisor, "");
+  }
+  
   public SegmentReadState(Directory dir,
                           SegmentInfo info,
                           FieldInfos fieldInfos,
                           int readBufferSize,
-                          int termsIndexDivisor) {
+                          int termsIndexDivisor,
+                          String codecId) {
     this.dir = dir;
     this.segmentInfo = info;
     this.fieldInfos = fieldInfos;
     this.readBufferSize = readBufferSize;
     this.termsIndexDivisor = termsIndexDivisor;
+    this.codecId = codecId;
   }
 }
\ No newline at end of file

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentWriteState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentWriteState.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentWriteState.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/SegmentWriteState.java Wed Nov 17 15:43:06 2010
@@ -37,7 +37,7 @@ public class SegmentWriteState {
   public final Collection<String> flushedFiles;
 
   final SegmentCodecs segmentCodecs;
-  public int currentCodecId;
+  public final String codecId;
 
   /** Expert: The fraction of terms in the "dictionary" which should be stored
    * in RAM.  Smaller values use more memory, but make searching slightly
@@ -73,5 +73,23 @@ public class SegmentWriteState {
     this.termIndexInterval = termIndexInterval;
     this.segmentCodecs = segmentCodecs;
     flushedFiles = new HashSet<String>();
+    codecId = "";
+  }
+  
+  /**
+   * Create a shallow {@link SegmentWriteState} copy final a codec ID
+   */
+  SegmentWriteState(SegmentWriteState state, String codecId) {
+    infoStream = state.infoStream;
+    directory = state.directory;
+    segmentName = state.segmentName;
+    fieldInfos = state.fieldInfos;
+    docStoreSegmentName = state.docStoreSegmentName;
+    numDocs = state.numDocs;
+    numDocsInStore = state.numDocsInStore;
+    termIndexInterval = state.termIndexInterval;
+    segmentCodecs = state.segmentCodecs;
+    flushedFiles = state.flushedFiles;
+    this.codecId = codecId;
   }
 }

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/Codec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/Codec.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/Codec.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/Codec.java Wed Nov 17 15:43:06 2010
@@ -51,8 +51,15 @@ public abstract class Codec {
    *  use; else, those files may be deleted. */
   public abstract FieldsProducer fieldsProducer(SegmentReadState state) throws IOException;
 
-  /** Gathers files associated with this segment */
-  public abstract void files(Directory dir, SegmentInfo segmentInfo, Set<String> files) throws IOException;
+  /**
+   * Gathers files associated with this segment
+   * 
+   * @param dir the {@link Directory} this segment was written to
+   * @param segmentInfo the {@link SegmentInfo} for this segment 
+   * @param id the codec id within this segment
+   * @param files the of files to add the codec files to.
+   */
+  public abstract void files(Directory dir, SegmentInfo segmentInfo, String id, Set<String> files) throws IOException;
 
   /** Records all file extensions this codec uses */
   public abstract void getExtensions(Set<String> extensions);

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexReader.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexReader.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexReader.java Wed Nov 17 15:43:06 2010
@@ -90,12 +90,12 @@ public class FixedGapTermsIndexReader ex
   // start of the field info data
   protected long dirOffset;
 
-  public FixedGapTermsIndexReader(Directory dir, FieldInfos fieldInfos, String segment, int indexDivisor, Comparator<BytesRef> termComp)
+  public FixedGapTermsIndexReader(Directory dir, FieldInfos fieldInfos, String segment, int indexDivisor, Comparator<BytesRef> termComp, String codecId)
     throws IOException {
 
     this.termComp = termComp;
 
-    IndexInput in = dir.openInput(IndexFileNames.segmentFileName(segment, "", FixedGapTermsIndexWriter.TERMS_INDEX_EXTENSION));
+    IndexInput in = dir.openInput(IndexFileNames.segmentFileName(segment, codecId, FixedGapTermsIndexWriter.TERMS_INDEX_EXTENSION));
     
     boolean success = false;
 
@@ -436,8 +436,8 @@ public class FixedGapTermsIndexReader ex
     return fields.get(fieldInfo);
   }
 
-  public static void files(Directory dir, SegmentInfo info, Collection<String> files) {
-    files.add(IndexFileNames.segmentFileName(info.name, "", FixedGapTermsIndexWriter.TERMS_INDEX_EXTENSION));
+  public static void files(Directory dir, SegmentInfo info, String id, Collection<String> files) {
+    files.add(IndexFileNames.segmentFileName(info.name, id, FixedGapTermsIndexWriter.TERMS_INDEX_EXTENSION));
   }
 
   public static void getIndexExtensions(Collection<String> extensions) {

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexWriter.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexWriter.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/FixedGapTermsIndexWriter.java Wed Nov 17 15:43:06 2010
@@ -49,7 +49,7 @@ public class FixedGapTermsIndexWriter ex
   private IndexOutput termsOut;
 
   public FixedGapTermsIndexWriter(SegmentWriteState state) throws IOException {
-    final String indexFileName = IndexFileNames.segmentFileName(state.segmentName, "", TERMS_INDEX_EXTENSION);
+    final String indexFileName = IndexFileNames.segmentFileName(state.segmentName, state.codecId, TERMS_INDEX_EXTENSION);
     state.flushedFiles.add(indexFileName);
     termIndexInterval = state.termIndexInterval;
     out = state.directory.createOutput(indexFileName);

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/PrefixCodedTermsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/PrefixCodedTermsReader.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/PrefixCodedTermsReader.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/PrefixCodedTermsReader.java Wed Nov 17 15:43:06 2010
@@ -113,7 +113,7 @@ public class PrefixCodedTermsReader exte
   }
   
   public PrefixCodedTermsReader(TermsIndexReaderBase indexReader, Directory dir, FieldInfos fieldInfos, String segment, PostingsReaderBase postingsReader, int readBufferSize,
-                                 Comparator<BytesRef> termComp, int termsCacheSize)
+                                 Comparator<BytesRef> termComp, int termsCacheSize, String codecId)
     throws IOException {
     
     this.postingsReader = postingsReader;
@@ -121,7 +121,7 @@ public class PrefixCodedTermsReader exte
 
     this.termComp = termComp;
     
-    in = dir.openInput(IndexFileNames.segmentFileName(segment, "", PrefixCodedTermsWriter.TERMS_EXTENSION),
+    in = dir.openInput(IndexFileNames.segmentFileName(segment, codecId, PrefixCodedTermsWriter.TERMS_EXTENSION),
                        readBufferSize);
 
     boolean success = false;
@@ -204,8 +204,8 @@ public class PrefixCodedTermsReader exte
     }
   }
 
-  public static void files(Directory dir, SegmentInfo segmentInfo, Collection<String> files) {
-    files.add(IndexFileNames.segmentFileName(segmentInfo.name, "", PrefixCodedTermsWriter.TERMS_EXTENSION));
+  public static void files(Directory dir, SegmentInfo segmentInfo, String id, Collection<String> files) {
+    files.add(IndexFileNames.segmentFileName(segmentInfo.name, id, PrefixCodedTermsWriter.TERMS_EXTENSION));
   }
 
   public static void getExtensions(Collection<String> extensions) {

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/PrefixCodedTermsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/PrefixCodedTermsWriter.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/PrefixCodedTermsWriter.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/PrefixCodedTermsWriter.java Wed Nov 17 15:43:06 2010
@@ -69,7 +69,7 @@ public class PrefixCodedTermsWriter exte
       PostingsWriterBase postingsWriter,
       Comparator<BytesRef> termComp) throws IOException
   {
-    final String termsFileName = IndexFileNames.segmentFileName(state.segmentName, "", TERMS_EXTENSION);
+    final String termsFileName = IndexFileNames.segmentFileName(state.segmentName, state.codecId, TERMS_EXTENSION);
     this.termsIndexWriter = termsIndexWriter;
     this.termComp = termComp;
     out = state.directory.createOutput(termsFileName);

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesCodec.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesCodec.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesCodec.java Wed Nov 17 15:43:06 2010
@@ -27,7 +27,6 @@ import java.util.Set;
 import java.util.Map.Entry;
 
 import org.apache.lucene.index.FieldInfo;
-import org.apache.lucene.index.FieldInfos;
 import org.apache.lucene.index.FieldsEnum;
 import org.apache.lucene.index.SegmentInfo;
 import org.apache.lucene.index.SegmentReadState;
@@ -92,7 +91,9 @@ public class DocValuesCodec extends Code
     public synchronized DocValuesConsumer addValuesField(FieldInfo field)
         throws IOException {
       DocValuesConsumer consumer = DocValuesConsumer.create(state.segmentName,
-          state.directory, field, null); // TODO: set comparator here
+      // TODO: set comparator here
+      //TODO can we have a compound file per segment and codec for docvalues?
+          state.directory, field, state.codecId +"-"+ field.number, null);
       docValuesConsumers.add(consumer);
       return consumer;
     }
@@ -113,30 +114,30 @@ public class DocValuesCodec extends Code
     Directory dir = state.dir;
     Set<String> files = new HashSet<String>();
 
-    other.files(dir, state.segmentInfo, files);
+    other.files(dir, state.segmentInfo, state.codecId, files);
     for (String string : files) {
       if (dir.fileExists(string))
-        return new WrappingFielsdProducer(state.segmentInfo, state.dir,
-            state.fieldInfos, other.fieldsProducer(state));
+        return new WrappingFielsdProducer(state, other.fieldsProducer(state));
     }
-    return new WrappingFielsdProducer(state.segmentInfo, state.dir,
-        state.fieldInfos, FieldsProducer.EMPTY);
+    return new WrappingFielsdProducer(state, FieldsProducer.EMPTY);
 
   }
 
   @Override
-  public void files(Directory dir, SegmentInfo segmentInfo, Set<String> files)
-      throws IOException {
+  public void files(Directory dir, SegmentInfo segmentInfo, String codecId,
+      Set<String> files) throws IOException {
     Set<String> otherFiles = new HashSet<String>();
-    other.files(dir, segmentInfo, otherFiles);
-    for (String string : otherFiles) { // under some circumstances we only write DocValues
-                                       // so other files will be added even if they don't exist
+    other.files(dir, segmentInfo, codecId, otherFiles);
+    for (String string : otherFiles) { // under some circumstances we only write
+                                       // DocValues
+                                       // so other files will be added even if
+                                       // they don't exist
       if (dir.fileExists(string))
         files.add(string);
     }
-
+    //TODO can we have a compound file per segment and codec for docvalues?
     for (String file : dir.listAll()) {
-      if (file.startsWith(segmentInfo.name)
+      if (file.startsWith(segmentInfo.name+"_" + codecId)
           && (file.endsWith(Writer.DATA_EXTENSION) || file
               .endsWith(Writer.INDEX_EXTENSION))) {
         files.add(file);
@@ -156,9 +157,9 @@ public class DocValuesCodec extends Code
 
     private final FieldsProducer other;
 
-    WrappingFielsdProducer(SegmentInfo si, Directory dir, FieldInfos fieldInfo,
-        FieldsProducer other) throws IOException {
-      super(si, dir, fieldInfo);
+    WrappingFielsdProducer(SegmentReadState state, FieldsProducer other)
+        throws IOException {
+      super(state.segmentInfo, state.dir, state.fieldInfos, state.codecId);
       this.other = other;
     }
 

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesConsumer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesConsumer.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesConsumer.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesConsumer.java Wed Nov 17 15:43:06 2010
@@ -89,9 +89,9 @@ public abstract class DocValuesConsumer 
   }
 
   public static DocValuesConsumer create(String segmentName,
-      Directory directory, FieldInfo field, Comparator<BytesRef> comp)
+      Directory directory, FieldInfo field, String codecId, Comparator<BytesRef> comp)
       throws IOException {
-    final String id = segmentName + "_" + field.number;
+    final String id = segmentName + "_" + codecId;
     return Writer.create(field.getDocValues(), id, directory, comp);
   }
 }

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesProducerBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesProducerBase.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesProducerBase.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/docvalues/DocValuesProducerBase.java Wed Nov 17 15:43:06 2010
@@ -36,8 +36,8 @@ public abstract class DocValuesProducerB
   
   protected final TreeMap<String, DocValues> docValues = new TreeMap<String, DocValues>();
 
-  protected DocValuesProducerBase(SegmentInfo si, Directory dir, FieldInfos fieldInfo) throws IOException {
-    load(fieldInfo, si.name, si.docCount, dir);
+  protected DocValuesProducerBase(SegmentInfo si, Directory dir, FieldInfos fieldInfo, String codecId) throws IOException {
+    load(fieldInfo, si.name, si.docCount, dir, codecId);
   }
 
   @Override
@@ -47,14 +47,14 @@ public abstract class DocValuesProducerB
 
   // Only opens files... doesn't actually load any values
   protected void load(FieldInfos fieldInfos, String segment, int docCount,
-      Directory dir) throws IOException {
+      Directory dir, String codecId) throws IOException {
     final int numFields = fieldInfos.size();
     for (int i = 0; i < numFields; i++) {
       final FieldInfo fieldInfo = fieldInfos.fieldInfo(i);
       final Values v = fieldInfo.getDocValues();
       final String field = fieldInfo.name;
-      final String id = IndexFileNames.segmentFileName(segment, Integer
-          .toString(fieldInfo.number),"");
+      //TODO can we have a compound file  per segment and codec for docvalues?
+      final String id = IndexFileNames.segmentFileName(segment, codecId+"-"+fieldInfo.number, "");
       if (v != null && dir.fileExists(id + "." +  Writer.DATA_EXTENSION)) {
         docValues.put(field, loadDocValues(docCount, dir, id, v));
       } 

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/preflex/PreFlexCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/preflex/PreFlexCodec.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/preflex/PreFlexCodec.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/preflex/PreFlexCodec.java Wed Nov 17 15:43:06 2010
@@ -66,7 +66,8 @@ public class PreFlexCodec extends Codec 
   }
 
   @Override
-  public void files(Directory dir, SegmentInfo info, Set<String> files) throws IOException {
+  public void files(Directory dir, SegmentInfo info, String id, Set<String> files) throws IOException {
+    // preflex fields have no codec ID - we ignore it here
     PreFlexFields.files(dir, info, files);
   }
 

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/pulsing/PulsingCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/pulsing/PulsingCodec.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/pulsing/PulsingCodec.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/pulsing/PulsingCodec.java Wed Nov 17 15:43:06 2010
@@ -108,7 +108,7 @@ public class PulsingCodec extends Codec 
 
     // We wrap StandardPostingsReader, but any StandardPostingsReader
     // will work:
-    PostingsReaderBase docsReader = new StandardPostingsReader(state.dir, state.segmentInfo, state.readBufferSize);
+    PostingsReaderBase docsReader = new StandardPostingsReader(state.dir, state.segmentInfo, state.readBufferSize, state.codecId);
     PostingsReaderBase pulsingReader = new PulsingPostingsReaderImpl(docsReader);
 
     // Terms dict index reader
@@ -120,7 +120,8 @@ public class PulsingCodec extends Codec 
                                                        state.fieldInfos,
                                                        state.segmentInfo.name,
                                                        state.termsIndexDivisor,
-                                                       BytesRef.getUTF8SortedAsUnicodeComparator());
+                                                       BytesRef.getUTF8SortedAsUnicodeComparator(),
+                                                       state.codecId);
       success = true;
     } finally {
       if (!success) {
@@ -136,7 +137,8 @@ public class PulsingCodec extends Codec 
                                                        pulsingReader,
                                                        state.readBufferSize,
                                                        BytesRef.getUTF8SortedAsUnicodeComparator(),
-                                                       StandardCodec.TERMS_CACHE_SIZE);
+                                                       StandardCodec.TERMS_CACHE_SIZE,
+                                                       state.codecId);
       success = true;
       return ret;
     } finally {
@@ -151,10 +153,10 @@ public class PulsingCodec extends Codec 
   }
 
   @Override
-  public void files(Directory dir, SegmentInfo segmentInfo, Set<String> files) throws IOException {
-    StandardPostingsReader.files(dir, segmentInfo, files);
-    PrefixCodedTermsReader.files(dir, segmentInfo, files);
-    FixedGapTermsIndexReader.files(dir, segmentInfo, files);
+  public void files(Directory dir, SegmentInfo segmentInfo, String id, Set<String> files) throws IOException {
+    StandardPostingsReader.files(dir, segmentInfo, id, files);
+    PrefixCodedTermsReader.files(dir, segmentInfo, id, files);
+    FixedGapTermsIndexReader.files(dir, segmentInfo, id, files);
   }
 
   @Override

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/sep/SepPostingsReaderImpl.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/sep/SepPostingsReaderImpl.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/sep/SepPostingsReaderImpl.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/sep/SepPostingsReaderImpl.java Wed Nov 17 15:43:06 2010
@@ -54,20 +54,20 @@ public class SepPostingsReaderImpl exten
   int skipInterval;
   int maxSkipLevels;
 
-  public SepPostingsReaderImpl(Directory dir, SegmentInfo segmentInfo, int readBufferSize, IntStreamFactory intFactory) throws IOException {
+  public SepPostingsReaderImpl(Directory dir, SegmentInfo segmentInfo, int readBufferSize, IntStreamFactory intFactory, String codecId) throws IOException {
 
     boolean success = false;
     try {
 
-      final String docFileName = IndexFileNames.segmentFileName(segmentInfo.name, "", SepPostingsWriterImpl.DOC_EXTENSION);
+      final String docFileName = IndexFileNames.segmentFileName(segmentInfo.name, codecId, SepPostingsWriterImpl.DOC_EXTENSION);
       docIn = intFactory.openInput(dir, docFileName);
 
-      skipIn = dir.openInput(IndexFileNames.segmentFileName(segmentInfo.name, "", SepPostingsWriterImpl.SKIP_EXTENSION), readBufferSize);
+      skipIn = dir.openInput(IndexFileNames.segmentFileName(segmentInfo.name, codecId, SepPostingsWriterImpl.SKIP_EXTENSION), readBufferSize);
 
       if (segmentInfo.getHasProx()) {
-        freqIn = intFactory.openInput(dir, IndexFileNames.segmentFileName(segmentInfo.name, "", SepPostingsWriterImpl.FREQ_EXTENSION));
-        posIn = intFactory.openInput(dir, IndexFileNames.segmentFileName(segmentInfo.name, "", SepPostingsWriterImpl.POS_EXTENSION), readBufferSize);
-        payloadIn = dir.openInput(IndexFileNames.segmentFileName(segmentInfo.name, "", SepPostingsWriterImpl.PAYLOAD_EXTENSION), readBufferSize);
+        freqIn = intFactory.openInput(dir, IndexFileNames.segmentFileName(segmentInfo.name, codecId, SepPostingsWriterImpl.FREQ_EXTENSION));
+        posIn = intFactory.openInput(dir, IndexFileNames.segmentFileName(segmentInfo.name, codecId, SepPostingsWriterImpl.POS_EXTENSION), readBufferSize);
+        payloadIn = dir.openInput(IndexFileNames.segmentFileName(segmentInfo.name, codecId, SepPostingsWriterImpl.PAYLOAD_EXTENSION), readBufferSize);
       } else {
         posIn = null;
         payloadIn = null;
@@ -81,14 +81,14 @@ public class SepPostingsReaderImpl exten
     }
   }
 
-  public static void files(SegmentInfo segmentInfo, Collection<String> files) {
-    files.add(IndexFileNames.segmentFileName(segmentInfo.name, "", SepPostingsWriterImpl.DOC_EXTENSION));
-    files.add(IndexFileNames.segmentFileName(segmentInfo.name, "", SepPostingsWriterImpl.SKIP_EXTENSION));
+  public static void files(SegmentInfo segmentInfo, String codecId, Collection<String> files) {
+    files.add(IndexFileNames.segmentFileName(segmentInfo.name, codecId, SepPostingsWriterImpl.DOC_EXTENSION));
+    files.add(IndexFileNames.segmentFileName(segmentInfo.name, codecId, SepPostingsWriterImpl.SKIP_EXTENSION));
 
     if (segmentInfo.getHasProx()) {
-      files.add(IndexFileNames.segmentFileName(segmentInfo.name, "", SepPostingsWriterImpl.FREQ_EXTENSION));
-      files.add(IndexFileNames.segmentFileName(segmentInfo.name, "", SepPostingsWriterImpl.POS_EXTENSION));
-      files.add(IndexFileNames.segmentFileName(segmentInfo.name, "", SepPostingsWriterImpl.PAYLOAD_EXTENSION));
+      files.add(IndexFileNames.segmentFileName(segmentInfo.name, codecId, SepPostingsWriterImpl.FREQ_EXTENSION));
+      files.add(IndexFileNames.segmentFileName(segmentInfo.name, codecId, SepPostingsWriterImpl.POS_EXTENSION));
+      files.add(IndexFileNames.segmentFileName(segmentInfo.name, codecId, SepPostingsWriterImpl.PAYLOAD_EXTENSION));
     }
   }
 

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/sep/SepPostingsWriterImpl.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/sep/SepPostingsWriterImpl.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/sep/SepPostingsWriterImpl.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/sep/SepPostingsWriterImpl.java Wed Nov 17 15:43:06 2010
@@ -84,24 +84,24 @@ public final class SepPostingsWriterImpl
   public SepPostingsWriterImpl(SegmentWriteState state, IntStreamFactory factory) throws IOException {
     super();
 
-    final String docFileName = IndexFileNames.segmentFileName(state.segmentName, "", DOC_EXTENSION);
+    final String docFileName = IndexFileNames.segmentFileName(state.segmentName, state.codecId, DOC_EXTENSION);
     state.flushedFiles.add(docFileName);
     docOut = factory.createOutput(state.directory, docFileName);
     docIndex = docOut.index();
 
     if (state.fieldInfos.hasProx()) {
-      final String frqFileName = IndexFileNames.segmentFileName(state.segmentName, "", FREQ_EXTENSION);
+      final String frqFileName = IndexFileNames.segmentFileName(state.segmentName, state.codecId, FREQ_EXTENSION);
       state.flushedFiles.add(frqFileName);
       freqOut = factory.createOutput(state.directory, frqFileName);
       freqIndex = freqOut.index();
 
-      final String posFileName = IndexFileNames.segmentFileName(state.segmentName, "", POS_EXTENSION);
+      final String posFileName = IndexFileNames.segmentFileName(state.segmentName, state.codecId, POS_EXTENSION);
       posOut = factory.createOutput(state.directory, posFileName);
       state.flushedFiles.add(posFileName);
       posIndex = posOut.index();
 
       // TODO: -- only if at least one field stores payloads?
-      final String payloadFileName = IndexFileNames.segmentFileName(state.segmentName, "", PAYLOAD_EXTENSION);
+      final String payloadFileName = IndexFileNames.segmentFileName(state.segmentName, state.codecId, PAYLOAD_EXTENSION);
       state.flushedFiles.add(payloadFileName);
       payloadOut = state.directory.createOutput(payloadFileName);
 
@@ -113,7 +113,7 @@ public final class SepPostingsWriterImpl
       payloadOut = null;
     }
 
-    final String skipFileName = IndexFileNames.segmentFileName(state.segmentName, "", SKIP_EXTENSION);
+    final String skipFileName = IndexFileNames.segmentFileName(state.segmentName, state.codecId, SKIP_EXTENSION);
     state.flushedFiles.add(skipFileName);
     skipOut = state.directory.createOutput(skipFileName);
 

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextCodec.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextCodec.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextCodec.java Wed Nov 17 15:43:06 2010
@@ -56,13 +56,13 @@ public class SimpleTextCodec extends Cod
   /** Extension of freq postings file */
   static final String POSTINGS_EXTENSION = "pst";
 
-  static String getPostingsFileName(String segment) {
+  static String getPostingsFileName(String segment, String id) {
     return IndexFileNames.segmentFileName(segment, "", POSTINGS_EXTENSION);
   }
 
   @Override
-  public void files(Directory dir, SegmentInfo segmentInfo, Set<String> files) throws IOException {
-    files.add(getPostingsFileName(segmentInfo.name));
+  public void files(Directory dir, SegmentInfo segmentInfo, String id, Set<String> files) throws IOException {
+    files.add(getPostingsFileName(segmentInfo.name, id));
   }
 
   @Override

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsReader.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsReader.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsReader.java Wed Nov 17 15:43:06 2010
@@ -57,7 +57,8 @@ class SimpleTextFieldsReader extends Fie
   final static BytesRef PAYLOAD = SimpleTextFieldsWriter.PAYLOAD;
 
   public SimpleTextFieldsReader(SegmentReadState state) throws IOException {
-    in = state.dir.openInput(SimpleTextCodec.getPostingsFileName(state.segmentInfo.name));
+    in = state.dir.openInput(SimpleTextCodec.getPostingsFileName(state.segmentInfo.name, ""+state.codecId));
+   
     fieldInfos = state.fieldInfos;
   }
 

Modified: lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsWriter.java?rev=1036080&r1=1036079&r2=1036080&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsWriter.java (original)
+++ lucene/dev/branches/docvalues/lucene/src/java/org/apache/lucene/index/codecs/simpletext/SimpleTextFieldsWriter.java Wed Nov 17 15:43:06 2010
@@ -44,7 +44,7 @@ class SimpleTextFieldsWriter extends Fie
   final static BytesRef PAYLOAD = new BytesRef("        payload ");
 
   public SimpleTextFieldsWriter(SegmentWriteState state) throws IOException {
-    final String fileName = SimpleTextCodec.getPostingsFileName(state.segmentName);
+    final String fileName = SimpleTextCodec.getPostingsFileName(state.segmentName, state.codecId);
     out = state.directory.createOutput(fileName);
     state.flushedFiles.add(fileName);
   }