summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-02-01 10:58:04 +0100
committerJon Bratseth <bratseth@oath.com>2018-02-01 10:58:04 +0100
commitcc0c5286d3bbf709c5ecd243665f92169651a422 (patch)
tree2514d49886bddcb0e7508a8bdf006ab4bacc2c6d /container-search
parentc1b85f88cce4d69aa78a0fc8ebcd17e73f1408e1 (diff)
Make tensor type info mandatory
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/types/FieldType.java5
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/profile/types/TensorFieldType.java20
-rw-r--r--container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeTestCase.java32
3 files changed, 23 insertions, 34 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/types/FieldType.java b/container-search/src/main/java/com/yahoo/search/query/profile/types/FieldType.java
index bb0498e0512..acefa26930a 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/types/FieldType.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/types/FieldType.java
@@ -5,9 +5,6 @@ import com.yahoo.search.query.profile.QueryProfile;
import com.yahoo.search.query.profile.QueryProfileRegistry;
import com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry;
import com.yahoo.search.yql.YqlQuery;
-import com.yahoo.tensor.Tensor;
-
-import java.util.Optional;
/**
* Superclass of query type field types.
@@ -24,7 +21,6 @@ public abstract class FieldType {
public static final PrimitiveFieldType floatType = new PrimitiveFieldType(Float.class);
public static final PrimitiveFieldType doubleType = new PrimitiveFieldType(Double.class);
public static final PrimitiveFieldType booleanType = new PrimitiveFieldType(Boolean.class);
- public static final TensorFieldType genericTensorType = new TensorFieldType(Optional.empty());
public static final QueryFieldType queryType = new QueryFieldType();
public static final QueryProfileFieldType genericQueryProfileType = new QueryProfileFieldType();
@@ -85,7 +81,6 @@ public abstract class FieldType {
if (clazz == Float.class) return floatType;
if (clazz == Double.class) return doubleType;
if (clazz == Boolean.class) return booleanType;
- if (clazz == Tensor.class) return genericTensorType;
if (clazz == YqlQuery.class) return queryType;
if (clazz == QueryProfile.class) return genericQueryProfileType;
return null;
diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/types/TensorFieldType.java b/container-search/src/main/java/com/yahoo/search/query/profile/types/TensorFieldType.java
index 0fd529bf262..6bda518f0cd 100644
--- a/container-search/src/main/java/com/yahoo/search/query/profile/types/TensorFieldType.java
+++ b/container-search/src/main/java/com/yahoo/search/query/profile/types/TensorFieldType.java
@@ -6,8 +6,6 @@ import com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry;
import com.yahoo.tensor.Tensor;
import com.yahoo.tensor.TensorType;
-import java.util.Optional;
-
/**
* A tensor field type in a query profile
*
@@ -15,17 +13,15 @@ import java.util.Optional;
*/
public class TensorFieldType extends FieldType {
- // TODO: Require tensor type
-
- private final Optional<TensorType> type;
+ private final TensorType type;
- /** Creates a tensor field type with optional information about the kind of tensor this will hold */
- public TensorFieldType(Optional<TensorType> type) {
+ /** Creates a tensor field type with information about the kind of tensor this will hold */
+ public TensorFieldType(TensorType type) {
this.type = type;
}
- /** Returns information about the type of tensor this will hold, or empty to allow any kind of tensor */
- public Optional<TensorType> type() { return type; }
+ /** Returns information about the type of tensor this will hold */
+ public TensorType type() { return type; }
@Override
public Class getValueClass() { return Tensor.class; }
@@ -42,7 +38,7 @@ public class TensorFieldType extends FieldType {
@Override
public Object convertFrom(Object o, QueryProfileRegistry registry) {
if (o instanceof Tensor) return o;
- if (o instanceof String) return type.isPresent() ? Tensor.from(type.get(), (String)o) : Tensor.from((String)o);
+ if (o instanceof String) return Tensor.from(type, (String)o);
return null;
}
@@ -52,9 +48,7 @@ public class TensorFieldType extends FieldType {
}
public static TensorFieldType fromTypeString(String s) {
- if (s.equals("tensor")) return genericTensorType;
- return new TensorFieldType(Optional.of(TensorType.fromSpec(s)));
+ return new TensorFieldType(TensorType.fromSpec(s));
}
-
}
diff --git a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeTestCase.java b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeTestCase.java
index 984707534ec..db1521a3a7b 100644
--- a/container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/query/profile/types/test/QueryProfileTypeTestCase.java
@@ -53,27 +53,27 @@ public class QueryProfileTypeTestCase extends junit.framework.TestCase {
registry.getTypeRegistry().register(userStrict);
addTypeFields(type, registry.getTypeRegistry());
- type.addField(new FieldDescription("myUserQueryProfile",FieldType.fromString("query-profile:user",registry.getTypeRegistry())));
+ type.addField(new FieldDescription("myUserQueryProfile", FieldType.fromString("query-profile:user", registry.getTypeRegistry())));
addTypeFields(typeStrict, registry.getTypeRegistry());
- typeStrict.addField(new FieldDescription("myUserQueryProfile",FieldType.fromString("query-profile:userStrict",registry.getTypeRegistry())));
+ typeStrict.addField(new FieldDescription("myUserQueryProfile", FieldType.fromString("query-profile:userStrict", registry.getTypeRegistry())));
addUserFields(user, registry.getTypeRegistry());
addUserFields(userStrict, registry.getTypeRegistry());
}
private void addTypeFields(QueryProfileType type, QueryProfileTypeRegistry registry) {
- type.addField(new FieldDescription("myString", FieldType.fromString("string",registry)), registry);
- type.addField(new FieldDescription("myInteger",FieldType.fromString("integer",registry),"int"), registry);
- type.addField(new FieldDescription("myLong",FieldType.fromString("long",registry)), registry);
- type.addField(new FieldDescription("myFloat",FieldType.fromString("float",registry)), registry);
- type.addField(new FieldDescription("myDouble",FieldType.fromString("double",registry)), registry);
- type.addField(new FieldDescription("myBoolean",FieldType.fromString("boolean",registry)), registry);
- type.addField(new FieldDescription("myBoolean",FieldType.fromString("boolean",registry)), registry);
- type.addField(new FieldDescription("ranking.features.query(myTensor1)",FieldType.fromString("tensor",registry)), registry);
- type.addField(new FieldDescription("ranking.features.query(myTensor2)",FieldType.fromString("tensor(x[2],y[2])",registry)), registry);
- type.addField(new FieldDescription("ranking.features.query(myTensor3)",FieldType.fromString("tensor(x{})",registry)), registry);
- type.addField(new FieldDescription("myQuery",FieldType.fromString("query",registry)), registry);
- type.addField(new FieldDescription("myQueryProfile",FieldType.fromString("query-profile",registry),"qp"), registry);
+ type.addField(new FieldDescription("myString", FieldType.fromString("string", registry)), registry);
+ type.addField(new FieldDescription("myInteger", FieldType.fromString("integer", registry),"int"), registry);
+ type.addField(new FieldDescription("myLong", FieldType.fromString("long", registry)), registry);
+ type.addField(new FieldDescription("myFloat", FieldType.fromString("float", registry)), registry);
+ type.addField(new FieldDescription("myDouble", FieldType.fromString("double", registry)), registry);
+ type.addField(new FieldDescription("myBoolean", FieldType.fromString("boolean", registry)), registry);
+ type.addField(new FieldDescription("myBoolean", FieldType.fromString("boolean", registry)), registry);
+ type.addField(new FieldDescription("ranking.features.query(myTensor1)", FieldType.fromString("tensor(a{},b{})", registry)), registry);
+ type.addField(new FieldDescription("ranking.features.query(myTensor2)", FieldType.fromString("tensor(x[2],y[2])", registry)), registry);
+ type.addField(new FieldDescription("ranking.features.query(myTensor3)", FieldType.fromString("tensor(x{})",registry)), registry);
+ type.addField(new FieldDescription("myQuery", FieldType.fromString("query", registry)), registry);
+ type.addField(new FieldDescription("myQueryProfile", FieldType.fromString("query-profile", registry),"qp"), registry);
}
private void addUserFields(QueryProfileType user, QueryProfileTypeRegistry registry) {
@@ -127,9 +127,9 @@ public class QueryProfileTypeTestCase extends junit.framework.TestCase {
assertEquals(3.14f, properties.get("myFloat"));
assertEquals(2.18, properties.get("myDouble"));
assertEquals(true, properties.get("myBoolean"));
- assertEquals(Tensor.from(tensorString1), properties.get("ranking.features.query(myTensor1)"));
+ assertEquals(Tensor.from(tensorString1), properties.get("ranking.features.query(myTensor1)"));
assertEquals(Tensor.from("tensor(x[2],y[2])", tensorString2), properties.get("ranking.features.query(myTensor2)"));
- assertEquals(Tensor.from("tensor(x{})", tensorString3), properties.get("ranking.features.query(myTensor3)"));
+ assertEquals(Tensor.from("tensor(x{})", tensorString3), properties.get("ranking.features.query(myTensor3)"));
// TODO: assertEquals(..., cprofile.get("myQuery"));
assertEquals("value1", properties.get("myQueryProfile.anyString"));
assertEquals("value1", properties.get("QP.anyString"));