mirror of https://github.com/apache/lucene.git
LUCENE-7079: add newSetQuery(String, Collection) to primitive Point types
This commit is contained in:
parent
5a43a3e772
commit
42361a68bc
|
@ -17,6 +17,7 @@
|
||||||
package org.apache.lucene.document;
|
package org.apache.lucene.document;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
import org.apache.lucene.index.PointValues;
|
import org.apache.lucene.index.PointValues;
|
||||||
import org.apache.lucene.search.PointInSetQuery;
|
import org.apache.lucene.search.PointInSetQuery;
|
||||||
|
@ -247,4 +248,19 @@ public final class DoublePoint extends Field {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a query matching any of the specified 1D values. This is the points equivalent of {@code TermsQuery}.
|
||||||
|
*
|
||||||
|
* @param field field name. must not be {@code null}.
|
||||||
|
* @param values all values to match
|
||||||
|
*/
|
||||||
|
public static Query newSetQuery(String field, Collection<Double> values) {
|
||||||
|
Double[] boxed = values.toArray(new Double[0]);
|
||||||
|
double[] unboxed = new double[boxed.length];
|
||||||
|
for (int i = 0; i < boxed.length; i++) {
|
||||||
|
unboxed[i] = boxed[i];
|
||||||
|
}
|
||||||
|
return newSetQuery(field, unboxed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
package org.apache.lucene.document;
|
package org.apache.lucene.document;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
import org.apache.lucene.index.PointValues;
|
import org.apache.lucene.index.PointValues;
|
||||||
import org.apache.lucene.search.PointInSetQuery;
|
import org.apache.lucene.search.PointInSetQuery;
|
||||||
|
@ -247,4 +248,19 @@ public final class FloatPoint extends Field {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a query matching any of the specified 1D values. This is the points equivalent of {@code TermsQuery}.
|
||||||
|
*
|
||||||
|
* @param field field name. must not be {@code null}.
|
||||||
|
* @param values all values to match
|
||||||
|
*/
|
||||||
|
public static Query newSetQuery(String field, Collection<Float> values) {
|
||||||
|
Float[] boxed = values.toArray(new Float[0]);
|
||||||
|
float[] unboxed = new float[boxed.length];
|
||||||
|
for (int i = 0; i < boxed.length; i++) {
|
||||||
|
unboxed[i] = boxed[i];
|
||||||
|
}
|
||||||
|
return newSetQuery(field, unboxed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
package org.apache.lucene.document;
|
package org.apache.lucene.document;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
import org.apache.lucene.index.PointValues;
|
import org.apache.lucene.index.PointValues;
|
||||||
import org.apache.lucene.search.PointInSetQuery;
|
import org.apache.lucene.search.PointInSetQuery;
|
||||||
|
@ -247,4 +248,19 @@ public final class IntPoint extends Field {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a query matching any of the specified 1D values. This is the points equivalent of {@code TermsQuery}.
|
||||||
|
*
|
||||||
|
* @param field field name. must not be {@code null}.
|
||||||
|
* @param values all values to match
|
||||||
|
*/
|
||||||
|
public static Query newSetQuery(String field, Collection<Integer> values) {
|
||||||
|
Integer[] boxed = values.toArray(new Integer[0]);
|
||||||
|
int[] unboxed = new int[boxed.length];
|
||||||
|
for (int i = 0; i < boxed.length; i++) {
|
||||||
|
unboxed[i] = boxed[i];
|
||||||
|
}
|
||||||
|
return newSetQuery(field, unboxed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
package org.apache.lucene.document;
|
package org.apache.lucene.document;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
import org.apache.lucene.index.PointValues;
|
import org.apache.lucene.index.PointValues;
|
||||||
import org.apache.lucene.search.PointInSetQuery;
|
import org.apache.lucene.search.PointInSetQuery;
|
||||||
|
@ -247,4 +248,19 @@ public final class LongPoint extends Field {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a query matching any of the specified 1D values. This is the points equivalent of {@code TermsQuery}.
|
||||||
|
*
|
||||||
|
* @param field field name. must not be {@code null}.
|
||||||
|
* @param values all values to match
|
||||||
|
*/
|
||||||
|
public static Query newSetQuery(String field, Collection<Long> values) {
|
||||||
|
Long[] boxed = values.toArray(new Long[0]);
|
||||||
|
long[] unboxed = new long[boxed.length];
|
||||||
|
for (int i = 0; i < boxed.length; i++) {
|
||||||
|
unboxed[i] = boxed[i];
|
||||||
|
}
|
||||||
|
return newSetQuery(field, unboxed);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1603,6 +1603,14 @@ public class TestPointQueries extends LuceneTestCase {
|
||||||
dir.close();
|
dir.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Boxed methods for primitive types should behave the same as unboxed: just sugar */
|
||||||
|
public void testPointIntSetBoxed() throws Exception {
|
||||||
|
assertEquals(IntPoint.newSetQuery("foo", 1, 2, 3), IntPoint.newSetQuery("foo", Arrays.asList(1, 2, 3)));
|
||||||
|
assertEquals(FloatPoint.newSetQuery("foo", 1F, 2F, 3F), FloatPoint.newSetQuery("foo", Arrays.asList(1F, 2F, 3F)));
|
||||||
|
assertEquals(LongPoint.newSetQuery("foo", 1L, 2L, 3L), LongPoint.newSetQuery("foo", Arrays.asList(1L, 2L, 3L)));
|
||||||
|
assertEquals(DoublePoint.newSetQuery("foo", 1D, 2D, 3D), DoublePoint.newSetQuery("foo", Arrays.asList(1D, 2D, 3D)));
|
||||||
|
}
|
||||||
|
|
||||||
public void testBasicMultiValuedPointInSetQuery() throws Exception {
|
public void testBasicMultiValuedPointInSetQuery() throws Exception {
|
||||||
Directory dir = newDirectory();
|
Directory dir = newDirectory();
|
||||||
IndexWriterConfig iwc = newIndexWriterConfig();
|
IndexWriterConfig iwc = newIndexWriterConfig();
|
||||||
|
|
|
@ -615,12 +615,7 @@ public class TestBlockJoin extends LuceneTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!toDelete.isEmpty()) {
|
if (!toDelete.isEmpty()) {
|
||||||
// TODO: we should add newSetQuery(String, Collection<T>) ? this is awkward.
|
Query query = IntPoint.newSetQuery("blockID", toDelete);
|
||||||
int[] array = new int[toDelete.size()];
|
|
||||||
for (int i = 0; i < toDelete.size(); i++) {
|
|
||||||
array[i] = toDelete.get(i);
|
|
||||||
}
|
|
||||||
Query query = IntPoint.newSetQuery("blockID", array);
|
|
||||||
w.deleteDocuments(query);
|
w.deleteDocuments(query);
|
||||||
joinW.deleteDocuments(query);
|
joinW.deleteDocuments(query);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue