diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-02-01 10:58:04 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-02-01 10:58:04 +0100 |
commit | cc0c5286d3bbf709c5ecd243665f92169651a422 (patch) | |
tree | 2514d49886bddcb0e7508a8bdf006ab4bacc2c6d | |
parent | c1b85f88cce4d69aa78a0fc8ebcd17e73f1408e1 (diff) |
Make tensor type info mandatory
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")); |