summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2023-01-27 15:22:20 +0100
committerJon Bratseth <bratseth@gmail.com>2023-01-27 15:22:20 +0100
commit5d278f289111a55400778cf4ebf085bf8003e9c4 (patch)
tree6bdf6af9378c0432eb1942ece78362b5926ab3c5
parentcb4e4db9331b92dede6214d8b4fb6d9aaccd5be1 (diff)
Dealias nn fields
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/IndexFacts.java7
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/SelectParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/YqlParser.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchers/ValidateNearestNeighborTestCase.java12
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java15
-rw-r--r--container-search/src/test/java/com/yahoo/select/SelectTestCase.java1
6 files changed, 23 insertions, 16 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java b/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java
index 90194f3ba6a..92ce6abb319 100644
--- a/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java
+++ b/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java
@@ -15,6 +15,9 @@ import java.util.TreeSet;
import static com.yahoo.text.Lowercase.toLowerCase;
/**
+ * NOTE: We are in the process of moving the functionality of this over to {@link com.yahoo.search.schema.SchemaInfo} -
+ * see if you can use that before adding usage of this.
+ *
* A central repository for information about indices. Standard usage is
*
* <pre><code>
@@ -24,9 +27,7 @@ import static com.yahoo.text.Lowercase.toLowerCase;
*
* @author Steinar Knutsen
*/
-// TODO: We should replace this with a better representation of search definitions
-// which is immutable, models clusters and search definitions inside clusters properly,
-// and uses better names. -bratseth
+// TODO: Complete migration to SchemaInfo
public class IndexFacts {
private Map<String, List<String>> clusterByDocument;
diff --git a/container-search/src/main/java/com/yahoo/search/query/SelectParser.java b/container-search/src/main/java/com/yahoo/search/query/SelectParser.java
index e8ea6f88fce..0c65f4bf8dc 100644
--- a/container-search/src/main/java/com/yahoo/search/query/SelectParser.java
+++ b/container-search/src/main/java/com/yahoo/search/query/SelectParser.java
@@ -475,7 +475,7 @@ public class SelectParser implements Parser {
Preconditions.checkArgument(children.size() == 2, "Expected 2 arguments, got %s.", children.size());
String field = children.get(0).asString();
String property = children.get(1).asString();
- NearestNeighborItem item = new NearestNeighborItem(field, property);
+ NearestNeighborItem item = new NearestNeighborItem(indexFactsSession.getCanonicName(field), property);
Inspector annotations = getAnnotations(value);
if (annotations != null){
annotations.traverse((ObjectTraverser) (annotation_name, annotation_value) -> {
diff --git a/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java b/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java
index 76ceb60b3d5..639e5b592c3 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java
@@ -448,7 +448,7 @@ public class YqlParser implements Parser {
Preconditions.checkArgument(args.size() == 2, "Expected 2 arguments, got %s.", args.size());
String field = fetchFieldName(args.get(0));
String property = fetchLiteral(args.get(1));
- NearestNeighborItem item = new NearestNeighborItem(field, property);
+ NearestNeighborItem item = new NearestNeighborItem(indexFactsSession.getCanonicName(field), property);
Integer targetNumHits = getAnnotation(ast, TARGET_HITS,
Integer.class, null, "desired minimum hits to produce");
if (targetNumHits == null) {
diff --git a/container-search/src/test/java/com/yahoo/search/searchers/ValidateNearestNeighborTestCase.java b/container-search/src/test/java/com/yahoo/search/searchers/ValidateNearestNeighborTestCase.java
index 9a7e3915d19..e85280914d8 100644
--- a/container-search/src/test/java/com/yahoo/search/searchers/ValidateNearestNeighborTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchers/ValidateNearestNeighborTestCase.java
@@ -63,12 +63,12 @@ public class ValidateNearestNeighborTestCase {
));
}
- private static TensorType tt_dense_dvector_42 = TensorType.fromSpec("tensor(x[42])");
- private static TensorType tt_dense_dvector_3 = TensorType.fromSpec("tensor(x[3])");
- private static TensorType tt_dense_dvector_2 = TensorType.fromSpec("tensor(x[2])");
- private static TensorType tt_dense_fvector_3 = TensorType.fromSpec("tensor<float>(x[3])");
- private static TensorType tt_dense_matrix_xy = TensorType.fromSpec("tensor(x[3],y[1])");
- private static TensorType tt_sparse_vector_x = TensorType.fromSpec("tensor(x{})");
+ private static final TensorType tt_dense_dvector_42 = TensorType.fromSpec("tensor(x[42])");
+ private static final TensorType tt_dense_dvector_3 = TensorType.fromSpec("tensor(x[3])");
+ private static final TensorType tt_dense_dvector_2 = TensorType.fromSpec("tensor(x[2])");
+ private static final TensorType tt_dense_fvector_3 = TensorType.fromSpec("tensor<float>(x[3])");
+ private static final TensorType tt_dense_matrix_xy = TensorType.fromSpec("tensor(x[3],y[1])");
+ private static final TensorType tt_sparse_vector_x = TensorType.fromSpec("tensor(x{})");
private Tensor makeTensor(TensorType tensorType) {
return makeTensor(tensorType, 3);
diff --git a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
index c15c3b2c5ea..bc9448f39d8 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
@@ -15,6 +15,7 @@ import com.yahoo.prelude.query.FuzzyItem;
import com.yahoo.prelude.query.IndexedItem;
import com.yahoo.prelude.query.Item;
import com.yahoo.prelude.query.MarkerWordItem;
+import com.yahoo.prelude.query.NearestNeighborItem;
import com.yahoo.prelude.query.PhraseItem;
import com.yahoo.prelude.query.PhraseSegmentItem;
import com.yahoo.prelude.query.PrefixItem;
@@ -990,21 +991,27 @@ public class YqlParserTestCase {
.name("music")
.command(new Command.Builder().indexname("title").command("index"))
.command(new Command.Builder().indexname("year").command("attribute"))
+ .command(new Command.Builder().indexname("embedding").command("attribute"))
.alias(new Alias.Builder().alias("song").indexname("title"))
- .alias(new Alias.Builder().alias("from").indexname("year"))));
+ .alias(new Alias.Builder().alias("from").indexname("year"))
+ .alias(new Alias.Builder().alias("vector").indexname("embedding"))));
IndexModel model = new IndexModel(modelConfig, (QrSearchersConfig) null);
IndexFacts indexFacts = new IndexFacts(model);
ParserEnvironment parserEnvironment = new ParserEnvironment().setIndexFacts(indexFacts);
YqlParser configuredParser = new YqlParser(parserEnvironment);
- QueryTree x = configuredParser.parse(new Parsable()
- .setQuery("select * from sources * where title contains \"a\" and song contains \"b\" order by \"from\""));
- List<IndexedItem> terms = QueryTree.getPositiveTerms(x);
+ QueryTree query = configuredParser.parse(new Parsable()
+ .setQuery("select * from sources * where title contains \"a\" and song contains \"b\"" +
+ "and nearestNeighbor(vector, queryVector)" +
+ "order by \"from\""));
+ List<IndexedItem> terms = QueryTree.getPositiveTerms(query);
assertEquals(2, terms.size());
for (IndexedItem term : terms)
assertEquals("title", term.getIndexName());
assertEquals(1, configuredParser.getSorting().fieldOrders().size());
assertEquals("year", configuredParser.getSorting().fieldOrders().get(0).getFieldName());
+ var nnItem = (NearestNeighborItem)((AndItem)query.getRoot()).getItem(2);
+ assertEquals("embedding", nnItem.getIndexName());
}
@Test
diff --git a/container-search/src/test/java/com/yahoo/select/SelectTestCase.java b/container-search/src/test/java/com/yahoo/select/SelectTestCase.java
index 887a1a3a033..10d3a5aeabe 100644
--- a/container-search/src/test/java/com/yahoo/select/SelectTestCase.java
+++ b/container-search/src/test/java/com/yahoo/select/SelectTestCase.java
@@ -546,7 +546,6 @@ public class SelectTestCase {
}
@Test
- @SuppressWarnings("deprecation")
void testWeakAnd() {
assertParse("{ \"weakAnd\": [{ \"contains\": [\"a\", \"A\"] }, { \"contains\": [\"b\", \"B\"] } ] }",
"WEAKAND(100) a:A b:B");