mirror of https://github.com/apache/lucene.git
Removing TermInSetQuery varargs ctor (#12837)
This commit is contained in:
parent
880d0ba1a8
commit
b22a9b8998
|
@ -70,6 +70,9 @@ API Changes
|
||||||
* GITHUB#12873: Expressions module now uses MethodHandles to define custom functions. Support for
|
* GITHUB#12873: Expressions module now uses MethodHandles to define custom functions. Support for
|
||||||
custom classloaders was removed. (Uwe Schindler)
|
custom classloaders was removed. (Uwe Schindler)
|
||||||
|
|
||||||
|
* GITHUB#12243: Remove TermInSetQuery ctors taking varargs param. SortedSetDocValuesField#newSlowSetQuery,
|
||||||
|
SortedDocValuesField#newSlowSetQuery, KeywordField#newSetQuery, KeywordField#newSetQuery now take a collection. (Jakub Slowinski)
|
||||||
|
|
||||||
New Features
|
New Features
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
|
@ -150,7 +153,8 @@ Other
|
||||||
|
|
||||||
API Changes
|
API Changes
|
||||||
---------------------
|
---------------------
|
||||||
(No changes)
|
* GITHUB#12243: Mark TermInSetQuery ctors with varargs terms as @Deprecated. SortedSetDocValuesField#newSlowSetQuery,
|
||||||
|
SortedDocValuesField#newSlowSetQuery, KeywordField#newSetQuery now take a collection of terms as a param. (Jakub Slowinski)
|
||||||
|
|
||||||
New Features
|
New Features
|
||||||
---------------------
|
---------------------
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.lucene.document;
|
package org.apache.lucene.document;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import org.apache.lucene.index.DocValuesType;
|
import org.apache.lucene.index.DocValuesType;
|
||||||
import org.apache.lucene.index.IndexOptions;
|
import org.apache.lucene.index.IndexOptions;
|
||||||
|
@ -171,7 +172,7 @@ public class KeywordField extends Field {
|
||||||
* @throws NullPointerException if {@code field} is null.
|
* @throws NullPointerException if {@code field} is null.
|
||||||
* @return a query matching documents with this exact value
|
* @return a query matching documents with this exact value
|
||||||
*/
|
*/
|
||||||
public static Query newSetQuery(String field, BytesRef... values) {
|
public static Query newSetQuery(String field, Collection<BytesRef> values) {
|
||||||
Objects.requireNonNull(field, "field must not be null");
|
Objects.requireNonNull(field, "field must not be null");
|
||||||
Objects.requireNonNull(values, "values must not be null");
|
Objects.requireNonNull(values, "values must not be null");
|
||||||
Query indexQuery = new TermInSetQuery(field, values);
|
Query indexQuery = new TermInSetQuery(field, values);
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.lucene.document;
|
package org.apache.lucene.document;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import org.apache.lucene.index.DocValuesType;
|
import org.apache.lucene.index.DocValuesType;
|
||||||
import org.apache.lucene.search.IndexOrDocValuesQuery;
|
import org.apache.lucene.search.IndexOrDocValuesQuery;
|
||||||
import org.apache.lucene.search.MultiTermQuery;
|
import org.apache.lucene.search.MultiTermQuery;
|
||||||
|
@ -99,7 +100,7 @@ public class SortedDocValuesField extends Field {
|
||||||
* in an {@link IndexOrDocValuesQuery}, alongside a set query that executes on postings, such as
|
* in an {@link IndexOrDocValuesQuery}, alongside a set query that executes on postings, such as
|
||||||
* {@link TermInSetQuery}.
|
* {@link TermInSetQuery}.
|
||||||
*/
|
*/
|
||||||
public static Query newSlowSetQuery(String field, BytesRef... values) {
|
public static Query newSlowSetQuery(String field, Collection<BytesRef> values) {
|
||||||
return new TermInSetQuery(MultiTermQuery.DOC_VALUES_REWRITE, field, values);
|
return new TermInSetQuery(MultiTermQuery.DOC_VALUES_REWRITE, field, values);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.lucene.document;
|
package org.apache.lucene.document;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import org.apache.lucene.index.DocValuesType;
|
import org.apache.lucene.index.DocValuesType;
|
||||||
import org.apache.lucene.search.IndexOrDocValuesQuery;
|
import org.apache.lucene.search.IndexOrDocValuesQuery;
|
||||||
import org.apache.lucene.search.MultiTermQuery;
|
import org.apache.lucene.search.MultiTermQuery;
|
||||||
|
@ -103,7 +104,7 @@ public class SortedSetDocValuesField extends Field {
|
||||||
* in an {@link IndexOrDocValuesQuery}, alongside a set query that executes on postings, such as
|
* in an {@link IndexOrDocValuesQuery}, alongside a set query that executes on postings, such as
|
||||||
* {@link TermInSetQuery}.
|
* {@link TermInSetQuery}.
|
||||||
*/
|
*/
|
||||||
public static Query newSlowSetQuery(String field, BytesRef... values) {
|
public static Query newSlowSetQuery(String field, Collection<BytesRef> values) {
|
||||||
return new TermInSetQuery(MultiTermQuery.DOC_VALUES_REWRITE, field, values);
|
return new TermInSetQuery(MultiTermQuery.DOC_VALUES_REWRITE, field, values);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,6 @@ package org.apache.lucene.search;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.UncheckedIOException;
|
import java.io.UncheckedIOException;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.SortedSet;
|
import java.util.SortedSet;
|
||||||
|
@ -83,10 +82,6 @@ public class TermInSetQuery extends MultiTermQuery implements Accountable {
|
||||||
this(field, packTerms(field, terms));
|
this(field, packTerms(field, terms));
|
||||||
}
|
}
|
||||||
|
|
||||||
public TermInSetQuery(String field, BytesRef... terms) {
|
|
||||||
this(field, packTerms(field, Arrays.asList(terms)));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Creates a new {@link TermInSetQuery} from the given collection of terms. */
|
/** Creates a new {@link TermInSetQuery} from the given collection of terms. */
|
||||||
public TermInSetQuery(RewriteMethod rewriteMethod, String field, Collection<BytesRef> terms) {
|
public TermInSetQuery(RewriteMethod rewriteMethod, String field, Collection<BytesRef> terms) {
|
||||||
super(field, rewriteMethod);
|
super(field, rewriteMethod);
|
||||||
|
@ -95,11 +90,6 @@ public class TermInSetQuery extends MultiTermQuery implements Accountable {
|
||||||
termDataHashCode = termData.hashCode();
|
termDataHashCode = termData.hashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Creates a new {@link TermInSetQuery} from the given array of terms. */
|
|
||||||
public TermInSetQuery(RewriteMethod rewriteMethod, String field, BytesRef... terms) {
|
|
||||||
this(rewriteMethod, field, Arrays.asList(terms));
|
|
||||||
}
|
|
||||||
|
|
||||||
private TermInSetQuery(String field, PrefixCodedTerms termData) {
|
private TermInSetQuery(String field, PrefixCodedTerms termData) {
|
||||||
super(field, MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE);
|
super(field, MultiTermQuery.CONSTANT_SCORE_BLENDED_REWRITE);
|
||||||
this.field = field;
|
this.field = field;
|
||||||
|
|
|
@ -17,7 +17,9 @@
|
||||||
package org.apache.lucene.document;
|
package org.apache.lucene.document;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
import org.apache.lucene.index.DirectoryReader;
|
import org.apache.lucene.index.DirectoryReader;
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
||||||
import org.apache.lucene.index.IndexWriter;
|
import org.apache.lucene.index.IndexWriter;
|
||||||
|
@ -125,15 +127,15 @@ public class TestKeywordField extends LuceneTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testValueClone() {
|
public void testValueClone() {
|
||||||
BytesRef[] values = new BytesRef[100];
|
List<BytesRef> values = new ArrayList<>(100);
|
||||||
for (int i = 0; i < 100; i++) {
|
for (int i = 0; i < 100; i++) {
|
||||||
String s = TestUtil.randomSimpleString(random(), 10, 20);
|
String s = TestUtil.randomSimpleString(random(), 10, 20);
|
||||||
values[i] = new BytesRef(s);
|
values.add(new BytesRef(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure we don't modify the input values array.
|
// Make sure we don't modify the input values array.
|
||||||
BytesRef[] expected = values.clone();
|
List<BytesRef> expected = new ArrayList<>(values);
|
||||||
KeywordField.newSetQuery("f", values);
|
KeywordField.newSetQuery("f", values);
|
||||||
assertArrayEquals(expected, values);
|
assertEquals(expected, values);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,29 +61,20 @@ public class TestSortedSetDocValuesSetQuery extends LuceneTestCase {
|
||||||
List<BytesRef> terms = new ArrayList<>();
|
List<BytesRef> terms = new ArrayList<>();
|
||||||
terms.add(new BytesRef("5"));
|
terms.add(new BytesRef("5"));
|
||||||
results =
|
results =
|
||||||
searcher.search(
|
searcher.search(SortedDocValuesField.newSlowSetQuery(fieldName, terms), numDocs).scoreDocs;
|
||||||
SortedDocValuesField.newSlowSetQuery(fieldName, terms.toArray(new BytesRef[0])),
|
|
||||||
numDocs)
|
|
||||||
.scoreDocs;
|
|
||||||
assertEquals("Must match nothing", 0, results.length);
|
assertEquals("Must match nothing", 0, results.length);
|
||||||
|
|
||||||
terms = new ArrayList<>();
|
terms = new ArrayList<>();
|
||||||
terms.add(new BytesRef("10"));
|
terms.add(new BytesRef("10"));
|
||||||
results =
|
results =
|
||||||
searcher.search(
|
searcher.search(SortedDocValuesField.newSlowSetQuery(fieldName, terms), numDocs).scoreDocs;
|
||||||
SortedDocValuesField.newSlowSetQuery(fieldName, terms.toArray(new BytesRef[0])),
|
|
||||||
numDocs)
|
|
||||||
.scoreDocs;
|
|
||||||
assertEquals("Must match 1", 1, results.length);
|
assertEquals("Must match 1", 1, results.length);
|
||||||
|
|
||||||
terms = new ArrayList<>();
|
terms = new ArrayList<>();
|
||||||
terms.add(new BytesRef("10"));
|
terms.add(new BytesRef("10"));
|
||||||
terms.add(new BytesRef("20"));
|
terms.add(new BytesRef("20"));
|
||||||
results =
|
results =
|
||||||
searcher.search(
|
searcher.search(SortedDocValuesField.newSlowSetQuery(fieldName, terms), numDocs).scoreDocs;
|
||||||
SortedDocValuesField.newSlowSetQuery(fieldName, terms.toArray(new BytesRef[0])),
|
|
||||||
numDocs)
|
|
||||||
.scoreDocs;
|
|
||||||
assertEquals("Must match 2", 2, results.length);
|
assertEquals("Must match 2", 2, results.length);
|
||||||
|
|
||||||
reader.close();
|
reader.close();
|
||||||
|
@ -91,21 +82,39 @@ public class TestSortedSetDocValuesSetQuery extends LuceneTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testEquals() {
|
public void testEquals() {
|
||||||
|
List<BytesRef> bar = new ArrayList<>();
|
||||||
|
bar.add(new BytesRef("bar"));
|
||||||
|
|
||||||
|
List<BytesRef> barbar = new ArrayList<>();
|
||||||
|
barbar.add(new BytesRef("bar"));
|
||||||
|
barbar.add(new BytesRef("bar"));
|
||||||
|
|
||||||
|
List<BytesRef> barbaz = new ArrayList<>();
|
||||||
|
barbaz.add(new BytesRef("bar"));
|
||||||
|
barbaz.add(new BytesRef("baz"));
|
||||||
|
|
||||||
|
List<BytesRef> bazbar = new ArrayList<>();
|
||||||
|
bazbar.add(new BytesRef("baz"));
|
||||||
|
bazbar.add(new BytesRef("bar"));
|
||||||
|
|
||||||
|
List<BytesRef> baz = new ArrayList<>();
|
||||||
|
baz.add(new BytesRef("baz"));
|
||||||
|
|
||||||
assertEquals(
|
assertEquals(
|
||||||
SortedDocValuesField.newSlowSetQuery("foo", new BytesRef("bar")),
|
SortedDocValuesField.newSlowSetQuery("foo", bar),
|
||||||
SortedDocValuesField.newSlowSetQuery("foo", new BytesRef("bar")));
|
SortedDocValuesField.newSlowSetQuery("foo", bar));
|
||||||
assertEquals(
|
assertEquals(
|
||||||
SortedDocValuesField.newSlowSetQuery("foo", new BytesRef("bar")),
|
SortedDocValuesField.newSlowSetQuery("foo", bar),
|
||||||
SortedDocValuesField.newSlowSetQuery("foo", new BytesRef("bar"), new BytesRef("bar")));
|
SortedDocValuesField.newSlowSetQuery("foo", barbar));
|
||||||
assertEquals(
|
assertEquals(
|
||||||
SortedDocValuesField.newSlowSetQuery("foo", new BytesRef("bar"), new BytesRef("baz")),
|
SortedDocValuesField.newSlowSetQuery("foo", barbaz),
|
||||||
SortedDocValuesField.newSlowSetQuery("foo", new BytesRef("baz"), new BytesRef("bar")));
|
SortedDocValuesField.newSlowSetQuery("foo", bazbar));
|
||||||
assertFalse(
|
assertNotEquals(
|
||||||
SortedDocValuesField.newSlowSetQuery("foo", new BytesRef("bar"))
|
SortedDocValuesField.newSlowSetQuery("foo", bar),
|
||||||
.equals(SortedDocValuesField.newSlowSetQuery("foo2", new BytesRef("bar"))));
|
SortedDocValuesField.newSlowSetQuery("foo2", bar));
|
||||||
assertFalse(
|
assertNotEquals(
|
||||||
SortedDocValuesField.newSlowSetQuery("foo", new BytesRef("bar"))
|
SortedDocValuesField.newSlowSetQuery("foo", bar),
|
||||||
.equals(SortedDocValuesField.newSlowSetQuery("foo", new BytesRef("baz"))));
|
SortedDocValuesField.newSlowSetQuery("foo", baz));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDuelTermsQuery() throws IOException {
|
public void testDuelTermsQuery() throws IOException {
|
||||||
|
@ -159,9 +168,7 @@ public class TestSortedSetDocValuesSetQuery extends LuceneTestCase {
|
||||||
bytesTerms.add(term.bytes());
|
bytesTerms.add(term.bytes());
|
||||||
}
|
}
|
||||||
final Query q2 =
|
final Query q2 =
|
||||||
new BoostQuery(
|
new BoostQuery(SortedDocValuesField.newSlowSetQuery("f", bytesTerms), boost);
|
||||||
SortedDocValuesField.newSlowSetQuery("f", bytesTerms.toArray(new BytesRef[0])),
|
|
||||||
boost);
|
|
||||||
assertSameMatches(searcher, q1, q2, true);
|
assertSameMatches(searcher, q1, q2, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,9 +228,7 @@ public class TestSortedSetDocValuesSetQuery extends LuceneTestCase {
|
||||||
bytesTerms.add(term.bytes());
|
bytesTerms.add(term.bytes());
|
||||||
}
|
}
|
||||||
final Query q2 =
|
final Query q2 =
|
||||||
new BoostQuery(
|
new BoostQuery(SortedDocValuesField.newSlowSetQuery("f", bytesTerms), boost);
|
||||||
SortedDocValuesField.newSlowSetQuery("f", bytesTerms.toArray(new BytesRef[0])),
|
|
||||||
boost);
|
|
||||||
|
|
||||||
BooleanQuery.Builder bq1 = new BooleanQuery.Builder();
|
BooleanQuery.Builder bq1 = new BooleanQuery.Builder();
|
||||||
bq1.add(q1, Occur.MUST);
|
bq1.add(q1, Occur.MUST);
|
||||||
|
|
|
@ -193,40 +193,42 @@ public class TestTermInSetQuery extends LuceneTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TermInSetQuery tq1 = new TermInSetQuery("thing", newBytesRef("apple"));
|
TermInSetQuery tq1 = new TermInSetQuery("thing", List.of(newBytesRef("apple")));
|
||||||
TermInSetQuery tq2 = new TermInSetQuery("thing", newBytesRef("orange"));
|
TermInSetQuery tq2 = new TermInSetQuery("thing", List.of(newBytesRef("orange")));
|
||||||
assertFalse(tq1.hashCode() == tq2.hashCode());
|
assertFalse(tq1.hashCode() == tq2.hashCode());
|
||||||
|
|
||||||
// different fields with the same term should have differing hashcodes
|
// different fields with the same term should have differing hashcodes
|
||||||
tq1 = new TermInSetQuery("thing", newBytesRef("apple"));
|
tq1 = new TermInSetQuery("thing", List.of(newBytesRef("apple")));
|
||||||
tq2 = new TermInSetQuery("thing2", newBytesRef("apple"));
|
tq2 = new TermInSetQuery("thing2", List.of(newBytesRef("apple")));
|
||||||
assertFalse(tq1.hashCode() == tq2.hashCode());
|
assertFalse(tq1.hashCode() == tq2.hashCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSimpleEquals() {
|
public void testSimpleEquals() {
|
||||||
// Two terms with the same hash code
|
// Two terms with the same hash code
|
||||||
assertEquals("AaAaBB".hashCode(), "BBBBBB".hashCode());
|
assertEquals("AaAaBB".hashCode(), "BBBBBB".hashCode());
|
||||||
TermInSetQuery left = new TermInSetQuery("id", newBytesRef("AaAaAa"), newBytesRef("AaAaBB"));
|
TermInSetQuery left =
|
||||||
TermInSetQuery right = new TermInSetQuery("id", newBytesRef("AaAaAa"), newBytesRef("BBBBBB"));
|
new TermInSetQuery("id", List.of(newBytesRef("AaAaAa"), newBytesRef("AaAaBB")));
|
||||||
|
TermInSetQuery right =
|
||||||
|
new TermInSetQuery("id", List.of(newBytesRef("AaAaAa"), newBytesRef("BBBBBB")));
|
||||||
assertFalse(left.equals(right));
|
assertFalse(left.equals(right));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testToString() {
|
public void testToString() {
|
||||||
TermInSetQuery termsQuery =
|
TermInSetQuery termsQuery =
|
||||||
new TermInSetQuery("field1", newBytesRef("a"), newBytesRef("b"), newBytesRef("c"));
|
new TermInSetQuery("field1", List.of(newBytesRef("a"), newBytesRef("b"), newBytesRef("c")));
|
||||||
assertEquals("field1:(a b c)", termsQuery.toString());
|
assertEquals("field1:(a b c)", termsQuery.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDedup() {
|
public void testDedup() {
|
||||||
Query query1 = new TermInSetQuery("foo", newBytesRef("bar"));
|
Query query1 = new TermInSetQuery("foo", List.of(newBytesRef("bar")));
|
||||||
Query query2 = new TermInSetQuery("foo", newBytesRef("bar"), newBytesRef("bar"));
|
Query query2 = new TermInSetQuery("foo", List.of(newBytesRef("bar"), newBytesRef("bar")));
|
||||||
QueryUtils.checkEqual(query1, query2);
|
QueryUtils.checkEqual(query1, query2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testOrderDoesNotMatter() {
|
public void testOrderDoesNotMatter() {
|
||||||
// order of terms if different
|
// order of terms if different
|
||||||
Query query1 = new TermInSetQuery("foo", newBytesRef("bar"), newBytesRef("baz"));
|
Query query1 = new TermInSetQuery("foo", List.of(newBytesRef("bar"), newBytesRef("baz")));
|
||||||
Query query2 = new TermInSetQuery("foo", newBytesRef("baz"), newBytesRef("bar"));
|
Query query2 = new TermInSetQuery("foo", List.of(newBytesRef("baz"), newBytesRef("bar")));
|
||||||
QueryUtils.checkEqual(query1, query2);
|
QueryUtils.checkEqual(query1, query2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -346,12 +348,13 @@ public class TestTermInSetQuery extends LuceneTestCase {
|
||||||
|
|
||||||
public void testBinaryToString() {
|
public void testBinaryToString() {
|
||||||
TermInSetQuery query =
|
TermInSetQuery query =
|
||||||
new TermInSetQuery("field", newBytesRef(new byte[] {(byte) 0xff, (byte) 0xfe}));
|
new TermInSetQuery("field", List.of(newBytesRef(new byte[] {(byte) 0xff, (byte) 0xfe})));
|
||||||
assertEquals("field:([ff fe])", query.toString());
|
assertEquals("field:([ff fe])", query.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testIsConsideredCostlyByQueryCache() throws IOException {
|
public void testIsConsideredCostlyByQueryCache() throws IOException {
|
||||||
TermInSetQuery query = new TermInSetQuery("foo", newBytesRef("bar"), newBytesRef("baz"));
|
TermInSetQuery query =
|
||||||
|
new TermInSetQuery("foo", List.of(newBytesRef("bar"), newBytesRef("baz")));
|
||||||
UsageTrackingQueryCachingPolicy policy = new UsageTrackingQueryCachingPolicy();
|
UsageTrackingQueryCachingPolicy policy = new UsageTrackingQueryCachingPolicy();
|
||||||
assertFalse(policy.shouldCache(query));
|
assertFalse(policy.shouldCache(query));
|
||||||
policy.onUse(query);
|
policy.onUse(query);
|
||||||
|
@ -362,7 +365,7 @@ public class TestTermInSetQuery extends LuceneTestCase {
|
||||||
|
|
||||||
public void testVisitor() {
|
public void testVisitor() {
|
||||||
// singleton reports back to consumeTerms()
|
// singleton reports back to consumeTerms()
|
||||||
TermInSetQuery singleton = new TermInSetQuery("field", newBytesRef("term1"));
|
TermInSetQuery singleton = new TermInSetQuery("field", List.of(newBytesRef("term1")));
|
||||||
singleton.visit(
|
singleton.visit(
|
||||||
new QueryVisitor() {
|
new QueryVisitor() {
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
package org.apache.lucene.monitor;
|
package org.apache.lucene.monitor;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -125,7 +126,7 @@ public class MultipassTermFilteredPresearcher extends TermFilteredPresearcher {
|
||||||
BooleanQuery.Builder child = new BooleanQuery.Builder();
|
BooleanQuery.Builder child = new BooleanQuery.Builder();
|
||||||
for (String field : terms.keySet()) {
|
for (String field : terms.keySet()) {
|
||||||
child.add(
|
child.add(
|
||||||
new TermInSetQuery(field(field, i), collectedTerms.get(field)),
|
new TermInSetQuery(field(field, i), Arrays.asList(collectedTerms.get(field))),
|
||||||
BooleanClause.Occur.SHOULD);
|
BooleanClause.Occur.SHOULD);
|
||||||
}
|
}
|
||||||
parent.add(child.build(), BooleanClause.Occur.MUST);
|
parent.add(child.build(), BooleanClause.Occur.MUST);
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
package org.apache.lucene.monitor;
|
package org.apache.lucene.monitor;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
import org.apache.lucene.analysis.core.KeywordAnalyzer;
|
import org.apache.lucene.analysis.core.KeywordAnalyzer;
|
||||||
import org.apache.lucene.index.DirectoryReader;
|
import org.apache.lucene.index.DirectoryReader;
|
||||||
import org.apache.lucene.index.IndexReader;
|
import org.apache.lucene.index.IndexReader;
|
||||||
|
@ -111,25 +112,33 @@ public class TestMultipassPresearcher extends PresearcherTestBase {
|
||||||
must(
|
must(
|
||||||
new BooleanQuery.Builder()
|
new BooleanQuery.Builder()
|
||||||
.add(
|
.add(
|
||||||
should(new TermInSetQuery("f_0", new BytesRef("test"))))
|
should(
|
||||||
|
new TermInSetQuery(
|
||||||
|
"f_0", List.of(new BytesRef("test")))))
|
||||||
.build()))
|
.build()))
|
||||||
.add(
|
.add(
|
||||||
must(
|
must(
|
||||||
new BooleanQuery.Builder()
|
new BooleanQuery.Builder()
|
||||||
.add(
|
.add(
|
||||||
should(new TermInSetQuery("f_1", new BytesRef("test"))))
|
should(
|
||||||
|
new TermInSetQuery(
|
||||||
|
"f_1", List.of(new BytesRef("test")))))
|
||||||
.build()))
|
.build()))
|
||||||
.add(
|
.add(
|
||||||
must(
|
must(
|
||||||
new BooleanQuery.Builder()
|
new BooleanQuery.Builder()
|
||||||
.add(
|
.add(
|
||||||
should(new TermInSetQuery("f_2", new BytesRef("test"))))
|
should(
|
||||||
|
new TermInSetQuery(
|
||||||
|
"f_2", List.of(new BytesRef("test")))))
|
||||||
.build()))
|
.build()))
|
||||||
.add(
|
.add(
|
||||||
must(
|
must(
|
||||||
new BooleanQuery.Builder()
|
new BooleanQuery.Builder()
|
||||||
.add(
|
.add(
|
||||||
should(new TermInSetQuery("f_3", new BytesRef("test"))))
|
should(
|
||||||
|
new TermInSetQuery(
|
||||||
|
"f_3", List.of(new BytesRef("test")))))
|
||||||
.build()))
|
.build()))
|
||||||
.build()))
|
.build()))
|
||||||
.add(should(new TermQuery(new Term("__anytokenfield", "__ANYTOKEN__"))))
|
.add(should(new TermQuery(new Term("__anytokenfield", "__ANYTOKEN__"))))
|
||||||
|
|
|
@ -19,6 +19,7 @@ package org.apache.lucene.monitor;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import org.apache.lucene.analysis.core.KeywordAnalyzer;
|
import org.apache.lucene.analysis.core.KeywordAnalyzer;
|
||||||
import org.apache.lucene.index.DirectoryReader;
|
import org.apache.lucene.index.DirectoryReader;
|
||||||
|
@ -144,7 +145,7 @@ public class TestTermPresearcher extends PresearcherTestBase {
|
||||||
.add(
|
.add(
|
||||||
should(
|
should(
|
||||||
new BooleanQuery.Builder()
|
new BooleanQuery.Builder()
|
||||||
.add(should(new TermInSetQuery("f", new BytesRef("test"))))
|
.add(should(new TermInSetQuery("f", List.of(new BytesRef("test")))))
|
||||||
.build()))
|
.build()))
|
||||||
.add(should(new TermQuery(new Term("__anytokenfield", "__ANYTOKEN__"))))
|
.add(should(new TermQuery(new Term("__anytokenfield", "__ANYTOKEN__"))))
|
||||||
.build();
|
.build();
|
||||||
|
|
Loading…
Reference in New Issue