diff --git a/CHANGES.txt b/CHANGES.txt index 39ff3f4c541..54f28364af4 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -114,7 +114,8 @@ API Changes was deprecated and will be removed in a later version. (DM Smith, Uwe Schindler) -* LUCENE-1973: Remove deprecated Similarity methods. (Uwe Schindler) +* LUCENE-1973: Remove deprecated Similarity methods. Remove deprecated + BoostingTermQuery and MultiValueSource. (Uwe Schindler) * LUCENE-2011: Remove deprecated Scorer.explain(int). (Uwe Schindler, Mark Miller) diff --git a/common-build.xml b/common-build.xml index 5944591a008..37fc21abaa7 100644 --- a/common-build.xml +++ b/common-build.xml @@ -42,7 +42,7 @@ - + diff --git a/src/java/org/apache/lucene/search/function/FieldCacheSource.java b/src/java/org/apache/lucene/search/function/FieldCacheSource.java index 76f3ae6819e..5df8841c0fe 100644 --- a/src/java/org/apache/lucene/search/function/FieldCacheSource.java +++ b/src/java/org/apache/lucene/search/function/FieldCacheSource.java @@ -44,10 +44,7 @@ import org.apache.lucene.search.FieldCache; * composite (multi-segment) reader, this can easily cause * double RAM usage for the values in the FieldCache. It's * best to switch your application to pass only atomic - * (single segment) readers to this API. Alternatively, for - * a short-term fix, you could wrap your ValueSource using - * {@link MultiValueSource}, which costs more CPU per lookup - * but will not consume double the FieldCache RAM.

+ * (single segment) readers to this API.

*/ public abstract class FieldCacheSource extends ValueSource { private String field; diff --git a/src/java/org/apache/lucene/search/function/MultiValueSource.java b/src/java/org/apache/lucene/search/function/MultiValueSource.java deleted file mode 100644 index f3b93be5e7a..00000000000 --- a/src/java/org/apache/lucene/search/function/MultiValueSource.java +++ /dev/null @@ -1,135 +0,0 @@ -package org.apache.lucene.search.function; - -/** - * 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. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import java.io.IOException; - -import org.apache.lucene.util.ReaderUtil; -import org.apache.lucene.index.IndexReader; -import org.apache.lucene.search.Explanation; - -/** This class wraps another ValueSource, but protects - * against accidental double RAM usage in FieldCache when - * a composite reader is passed to {@link #getValues}. - * - *

NOTE: this class adds a CPU penalty to every - * lookup, as it must resolve the incoming document to the - * right sub-reader using a binary search.

- * - * @deprecated This class is temporary, to ease the - * migration to segment-based searching. Please change your - * code to not pass composite readers to these APIs. */ - -public final class MultiValueSource extends ValueSource { - - final ValueSource other; - public MultiValueSource(ValueSource other) { - this.other = other; - } - - @Override - public DocValues getValues(IndexReader reader) throws IOException { - - IndexReader[] subReaders = reader.getSequentialSubReaders(); - if (subReaders != null) { - // This is a composite reader - return new MultiDocValues(subReaders); - } else { - // Already an atomic reader -- just delegate - return other.getValues(reader); - } - } - - @Override - public String description() { - return other.description(); - } - - @Override - public boolean equals(Object o) { - if (o instanceof MultiValueSource) { - return ((MultiValueSource) o).other.equals(other); - } else { - return false; - } - } - - @Override - public int hashCode() { - return 31 * other.hashCode(); - } - - private final class MultiDocValues extends DocValues { - - final DocValues[] docValues; - final int[] docStarts; - - MultiDocValues(IndexReader[] subReaders) throws IOException { - docValues = new DocValues[subReaders.length]; - docStarts = new int[subReaders.length]; - int base = 0; - for(int i=0;i + * (single segment) readers to this API.

*/ public class OrdFieldSource extends ValueSource { diff --git a/src/java/org/apache/lucene/search/function/ReverseOrdFieldSource.java b/src/java/org/apache/lucene/search/function/ReverseOrdFieldSource.java index c67d0bf58ab..2d9e488915a 100644 --- a/src/java/org/apache/lucene/search/function/ReverseOrdFieldSource.java +++ b/src/java/org/apache/lucene/search/function/ReverseOrdFieldSource.java @@ -50,10 +50,7 @@ import java.io.IOException; * composite (multi-segment) reader, this can easily cause * double RAM usage for the values in the FieldCache. It's * best to switch your application to pass only atomic - * (single segment) readers to this API. Alternatively, for - * a short-term fix, you could wrap your ValueSource using - * {@link MultiValueSource}, which costs more CPU per lookup - * but will not consume double the FieldCache RAM.

+ * (single segment) readers to this API.

*/ public class ReverseOrdFieldSource extends ValueSource { diff --git a/src/test/org/apache/lucene/search/function/TestOrdValues.java b/src/test/org/apache/lucene/search/function/TestOrdValues.java index b343ecd1ff7..680601c7045 100644 --- a/src/test/org/apache/lucene/search/function/TestOrdValues.java +++ b/src/test/org/apache/lucene/search/function/TestOrdValues.java @@ -58,9 +58,9 @@ public class TestOrdValues extends FunctionTestSetup { IndexSearcher s = new IndexSearcher(dir, true); ValueSource vs; if (inOrder) { - vs = new MultiValueSource(new OrdFieldSource(field)); + vs = new OrdFieldSource(field); } else { - vs = new MultiValueSource(new ReverseOrdFieldSource(field)); + vs = new ReverseOrdFieldSource(field); } Query q = new ValueSourceQuery(vs); diff --git a/src/test/org/apache/lucene/search/function/TestValueSource.java b/src/test/org/apache/lucene/search/function/TestValueSource.java deleted file mode 100644 index a296a0f8686..00000000000 --- a/src/test/org/apache/lucene/search/function/TestValueSource.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.apache.lucene.search.function; - -/** - * 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. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import org.apache.lucene.util.*; -import org.apache.lucene.store.*; -import org.apache.lucene.search.*; -import org.apache.lucene.search.function.*; -import org.apache.lucene.analysis.*; -import org.apache.lucene.index.*; -import org.apache.lucene.document.*; - -public class TestValueSource extends LuceneTestCase { - - public void testMultiValueSource() throws Exception { - Directory dir = new MockRAMDirectory(); - IndexWriter w = new IndexWriter(dir, new WhitespaceAnalyzer(), IndexWriter.MaxFieldLength.UNLIMITED); - Document doc = new Document(); - Field f = new Field("field", "", Field.Store.NO, Field.Index.NOT_ANALYZED); - doc.add(f); - - for(int i=0;i<17;i++) { - f.setValue(""+i); - w.addDocument(doc); - w.commit(); - } - - IndexReader r = w.getReader(); - w.close(); - - assertTrue(r.getSequentialSubReaders().length > 1); - - ValueSource s1 = new IntFieldSource("field"); - DocValues v1 = s1.getValues(r); - DocValues v2 = new MultiValueSource(s1).getValues(r); - - for(int i=0;i