summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-09-20 09:30:01 -0700
committerJon Bratseth <bratseth@oath.com>2018-09-20 09:30:01 -0700
commit0436890e9520083c2227a6afb4780f0b588f977b (patch)
tree3098101201e2e49ae9e281e8fb6eaf5aa7c539b3
parent7994462805a16f4665e52a0b9f9770d3c7563556 (diff)
Output type information
-rw-r--r--config-model/src/test/derived/gemini2/rank-profiles.cfg4
-rw-r--r--config-model/src/test/derived/rankexpression/rank-profiles.cfg60
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java10
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java17
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java3
6 files changed, 83 insertions, 13 deletions
diff --git a/config-model/src/test/derived/gemini2/rank-profiles.cfg b/config-model/src/test/derived/gemini2/rank-profiles.cfg
index aa4f963320d..2b73e923c88 100644
--- a/config-model/src/test/derived/gemini2/rank-profiles.cfg
+++ b/config-model/src/test/derived/gemini2/rank-profiles.cfg
@@ -21,9 +21,13 @@ rankprofile[].fef.property[].name "rankingExpression(wrapper1@2d437c13405e61d6).
rankprofile[].fef.property[].value "rankingExpression(wrapper2@2d437c13405e61d6)"
rankprofile[].fef.property[].name "rankingExpression(toplevel).rankingScript"
rankprofile[].fef.property[].value "rankingExpression(wrapper1@2d437c13405e61d6)"
+rankprofile[].fef.property[].name "rankingExpression(toplevel).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(wrapper2@8fc8470e911f253f).rankingScript"
rankprofile[].fef.property[].value "attribute(wrong)"
rankprofile[].fef.property[].name "rankingExpression(wrapper1@8fc8470e911f253f).rankingScript"
rankprofile[].fef.property[].value "rankingExpression(wrapper2@8fc8470e911f253f)"
rankprofile[].fef.property[].name "rankingExpression(interfering).rankingScript"
rankprofile[].fef.property[].value "rankingExpression(wrapper1@8fc8470e911f253f)"
+rankprofile[].fef.property[].name "rankingExpression(interfering).type"
+rankprofile[].fef.property[].value "tensor()"
diff --git a/config-model/src/test/derived/rankexpression/rank-profiles.cfg b/config-model/src/test/derived/rankexpression/rank-profiles.cfg
index 9629ad863d4..d109ca4f0ec 100644
--- a/config-model/src/test/derived/rankexpression/rank-profiles.cfg
+++ b/config-model/src/test/derived/rankexpression/rank-profiles.cfg
@@ -128,6 +128,8 @@ rankprofile[].fef.property[].name "rankingExpression(fourtimessum).rankingScript
rankprofile[].fef.property[].value "4 * (var1 + var2)"
rankprofile[].fef.property[].name "rankingExpression(myfeature).rankingScript"
rankprofile[].fef.property[].value "70 * fieldMatch(title).completeness * pow(0 - fieldMatch(title).earliness,2) + 30 * pow(0 - fieldMatch(description).earliness,2)"
+rankprofile[].fef.property[].name "rankingExpression(myfeature).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(fourtimessum@5cf279212355b980.67f1e87166cfef86).rankingScript"
rankprofile[].fef.property[].value "4 * (match + rankBoost)"
rankprofile[].fef.property[].name "vespa.rank.firstphase"
@@ -145,10 +147,16 @@ rankprofile[].fef.property[].name "rankingExpression(fourtimessum).rankingScript
rankprofile[].fef.property[].value "4 * (var1 + var2)"
rankprofile[].fef.property[].name "rankingExpression(myfeature).rankingScript"
rankprofile[].fef.property[].value "70 * fieldMatch(title).completeness * pow(0 - fieldMatch(title).earliness,2) + 30 * pow(0 - fieldMatch(description).earliness,2)"
+rankprofile[].fef.property[].name "rankingExpression(myfeature).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature).rankingScript"
rankprofile[].fef.property[].value "70 * fieldMatch(title).completeness"
+rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature2).rankingScript"
rankprofile[].fef.property[].value "71 * fieldMatch(title).completeness"
+rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature2).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(fourtimessum@2b1138e8965e7ff5.67f1e87166cfef86).rankingScript"
rankprofile[].fef.property[].value "4 * (match + match)"
rankprofile[].fef.property[].name "vespa.rank.firstphase"
@@ -164,11 +172,15 @@ rankprofile[].fef.property[].value "rankingExpression(mysummaryfeature)"
rankprofile[].name "macros3"
rankprofile[].fef.property[].name "rankingExpression(onlyusedinsummaryfeature).rankingScript"
rankprofile[].fef.property[].value "5"
+rankprofile[].fef.property[].name "rankingExpression(onlyusedinsummaryfeature).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "vespa.summary.feature"
rankprofile[].fef.property[].value "rankingExpression(matches(title,rankingExpression(onlyusedinsummaryfeature)))"
rankprofile[].name "macros3-inherited"
rankprofile[].fef.property[].name "rankingExpression(onlyusedinsummaryfeature).rankingScript"
rankprofile[].fef.property[].value "5"
+rankprofile[].fef.property[].name "rankingExpression(onlyusedinsummaryfeature).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "vespa.summary.feature"
rankprofile[].fef.property[].value "rankingExpression(matches(title,rankingExpression(onlyusedinsummaryfeature)))"
rankprofile[].name "macros-inherited"
@@ -178,10 +190,16 @@ rankprofile[].fef.property[].name "rankingExpression(fourtimessum).rankingScript
rankprofile[].fef.property[].value "4 * (var1 + var2)"
rankprofile[].fef.property[].name "rankingExpression(myfeature).rankingScript"
rankprofile[].fef.property[].value "70 * fieldMatch(title).completeness * pow(0 - fieldMatch(title).earliness,2) + 30 * pow(0 - fieldMatch(description).earliness,2)"
+rankprofile[].fef.property[].name "rankingExpression(myfeature).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature).rankingScript"
rankprofile[].fef.property[].value "80 * fieldMatch(title).completeness"
+rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature2).rankingScript"
rankprofile[].fef.property[].value "71 * fieldMatch(title).completeness"
+rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature2).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(fourtimessum@2b1138e8965e7ff5.67f1e87166cfef86).rankingScript"
rankprofile[].fef.property[].value "4 * (match + match)"
rankprofile[].fef.property[].name "vespa.rank.firstphase"
@@ -203,10 +221,16 @@ rankprofile[].fef.property[].name "rankingExpression(fourtimessum).rankingScript
rankprofile[].fef.property[].value "4 * (var1 + var2)"
rankprofile[].fef.property[].name "rankingExpression(myfeature).rankingScript"
rankprofile[].fef.property[].value "70 * fieldMatch(title).completeness * pow(0 - fieldMatch(title).earliness,2) + 30 * pow(0 - fieldMatch(description).earliness,2)"
+rankprofile[].fef.property[].name "rankingExpression(myfeature).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature).rankingScript"
rankprofile[].fef.property[].value "80 * fieldMatch(title).completeness"
+rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature2).rankingScript"
rankprofile[].fef.property[].value "71 * fieldMatch(title).completeness"
+rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature2).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(fourtimessum@2b1138e8965e7ff5.67f1e87166cfef86).rankingScript"
rankprofile[].fef.property[].value "4 * (match + match)"
rankprofile[].fef.property[].name "vespa.rank.firstphase"
@@ -228,10 +252,16 @@ rankprofile[].fef.property[].name "rankingExpression(fourtimessum).rankingScript
rankprofile[].fef.property[].value "4 * (var1 + var2)"
rankprofile[].fef.property[].name "rankingExpression(myfeature).rankingScript"
rankprofile[].fef.property[].value "700 * fieldMatch(title).completeness"
+rankprofile[].fef.property[].name "rankingExpression(myfeature).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature).rankingScript"
rankprofile[].fef.property[].value "80 * fieldMatch(title).completeness"
+rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature2).rankingScript"
rankprofile[].fef.property[].value "71 * fieldMatch(title).completeness"
+rankprofile[].fef.property[].name "rankingExpression(mysummaryfeature2).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "vespa.rank.firstphase"
rankprofile[].fef.property[].value "rankingExpression(firstphase)"
rankprofile[].fef.property[].name "rankingExpression(firstphase).rankingScript"
@@ -249,8 +279,14 @@ rankprofile[].fef.property[].name "rankingExpression(m1).rankingScript"
rankprofile[].fef.property[].value "700 * fieldMatch(title).completeness"
rankprofile[].fef.property[].name "rankingExpression(m2).rankingScript"
rankprofile[].fef.property[].value "rankingExpression(m1) * 67"
+rankprofile[].fef.property[].name "rankingExpression(m2).type"
+rankprofile[].fef.property[].value "tensor()"
+rankprofile[].fef.property[].name "rankingExpression(m1).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(m4).rankingScript"
rankprofile[].fef.property[].value "703 * fieldMatch(fromfile).completeness"
+rankprofile[].fef.property[].name "rankingExpression(m4).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "vespa.rank.secondphase"
rankprofile[].fef.property[].value "rankingExpression(secondphase)"
rankprofile[].fef.property[].name "rankingExpression(secondphase).rankingScript"
@@ -260,10 +296,18 @@ rankprofile[].fef.property[].name "rankingExpression(m1).rankingScript"
rankprofile[].fef.property[].value "700 * fieldMatch(title).completeness"
rankprofile[].fef.property[].name "rankingExpression(m2).rankingScript"
rankprofile[].fef.property[].value "rankingExpression(m1) * 67"
+rankprofile[].fef.property[].name "rankingExpression(m2).type"
+rankprofile[].fef.property[].value "tensor()"
+rankprofile[].fef.property[].name "rankingExpression(m1).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(m4).rankingScript"
rankprofile[].fef.property[].value "701 * fieldMatch(title).completeness"
+rankprofile[].fef.property[].name "rankingExpression(m4).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(m3).rankingScript"
rankprofile[].fef.property[].value "if (isNan(attribute(nrtgmp)) == 1, 0.0, rankingExpression(m2))"
+rankprofile[].fef.property[].name "rankingExpression(m3).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "vespa.rank.secondphase"
rankprofile[].fef.property[].value "rankingExpression(secondphase)"
rankprofile[].fef.property[].name "rankingExpression(secondphase).rankingScript"
@@ -273,8 +317,14 @@ rankprofile[].fef.property[].name "rankingExpression(m1).rankingScript"
rankprofile[].fef.property[].value "700 * fieldMatch(title).completeness"
rankprofile[].fef.property[].name "rankingExpression(m2).rankingScript"
rankprofile[].fef.property[].value "rankingExpression(m1) * 67"
+rankprofile[].fef.property[].name "rankingExpression(m2).type"
+rankprofile[].fef.property[].value "tensor()"
+rankprofile[].fef.property[].name "rankingExpression(m1).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(m4).rankingScript"
rankprofile[].fef.property[].value "703 * fieldMatch(fromfile).completeness"
+rankprofile[].fef.property[].name "rankingExpression(m4).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "vespa.rank.secondphase"
rankprofile[].fef.property[].value "rankingExpression(secondphase)"
rankprofile[].fef.property[].name "rankingExpression(secondphase).rankingScript"
@@ -284,12 +334,22 @@ rankprofile[].fef.property[].name "rankingExpression(m1).rankingScript"
rankprofile[].fef.property[].value "700 * fieldMatch(title).completeness"
rankprofile[].fef.property[].name "rankingExpression(m2).rankingScript"
rankprofile[].fef.property[].value "rankingExpression(m1) * 67"
+rankprofile[].fef.property[].name "rankingExpression(m2).type"
+rankprofile[].fef.property[].value "tensor()"
+rankprofile[].fef.property[].name "rankingExpression(m1).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(m4).rankingScript"
rankprofile[].fef.property[].value "701 * fieldMatch(title).completeness"
+rankprofile[].fef.property[].name "rankingExpression(m4).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(m3).rankingScript"
rankprofile[].fef.property[].value "if (isNan(attribute(nrtgmp)) == 1, 0.0, rankingExpression(m2))"
+rankprofile[].fef.property[].name "rankingExpression(m3).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "rankingExpression(m5).rankingScript"
rankprofile[].fef.property[].value "if (isNan(attribute(glmpfw)) == 1, rankingExpression(m1), rankingExpression(m4))"
+rankprofile[].fef.property[].name "rankingExpression(m5).type"
+rankprofile[].fef.property[].value "tensor()"
rankprofile[].fef.property[].name "vespa.rank.secondphase"
rankprofile[].fef.property[].value "rankingExpression(secondphase)"
rankprofile[].fef.property[].name "rankingExpression(secondphase).rankingScript"
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java
index 150469cc928..2c1f4c8ecb6 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionConstantsTestCase.java
@@ -82,7 +82,7 @@ public class RankingExpressionConstantsTestCase extends SearchDefinitionTestCase
new ImportedModels(),
new AttributeFields(s)).configProperties();
assertEquals("(rankingExpression(foo).rankingScript,14.0)", rankProperties.get(0).toString());
- assertEquals("(rankingExpression(firstphase).rankingScript,16.6)", rankProperties.get(2).toString());
+ assertEquals("(rankingExpression(firstphase).rankingScript,16.6)", rankProperties.get(3).toString());
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java
index e15d4075b19..4f99922a422 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/RankingExpressionShadowingTestCase.java
@@ -211,12 +211,16 @@ public class RankingExpressionShadowingTestCase extends SearchDefinitionTestCase
censorBindingHash(testRankProperties.get(1).toString()));
assertEquals("(rankingExpression(hidden_layer).rankingScript,rankingExpression(relu@))",
censorBindingHash(testRankProperties.get(2).toString()));
+ assertEquals("(rankingExpression(hidden_layer).type,tensor(x[]))",
+ censorBindingHash(testRankProperties.get(3).toString()));
assertEquals("(rankingExpression(final_layer).rankingScript,sigmoid(reduce(rankingExpression(hidden_layer) * constant(W_final), sum, hidden) + constant(b_final)))",
- testRankProperties.get(3).toString());
- assertEquals("(vespa.rank.secondphase,rankingExpression(secondphase))",
testRankProperties.get(4).toString());
- assertEquals("(rankingExpression(secondphase).rankingScript,reduce(rankingExpression(final_layer), sum))",
+ assertEquals("(rankingExpression(final_layer).type,tensor(x[]))",
testRankProperties.get(5).toString());
+ assertEquals("(vespa.rank.secondphase,rankingExpression(secondphase))",
+ testRankProperties.get(6).toString());
+ assertEquals("(rankingExpression(secondphase).rankingScript,reduce(rankingExpression(final_layer), sum))",
+ testRankProperties.get(7).toString());
}
private QueryProfileRegistry queryProfileWith(String field, String type) {
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java
index fd048737b43..7d62bc5089d 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/processing/RankingExpressionsTestCase.java
@@ -41,7 +41,7 @@ public class RankingExpressionsTestCase extends SearchDefinitionTestCase {
new QueryProfileRegistry(),
new ImportedModels(),
new AttributeFields(search)).configProperties();
- assertEquals(6, rankProperties.size());
+ assertEquals(7, rankProperties.size());
assertEquals("rankingExpression(titlematch$).rankingScript", rankProperties.get(0).getFirst());
assertEquals("var1 * var2 + 890", rankProperties.get(0).getSecond());
@@ -49,14 +49,17 @@ public class RankingExpressionsTestCase extends SearchDefinitionTestCase {
assertEquals("rankingExpression(artistmatch).rankingScript", rankProperties.get(1).getFirst());
assertEquals("78 + closeness(distance)", rankProperties.get(1).getSecond());
- assertEquals("rankingExpression(firstphase).rankingScript", rankProperties.get(5).getFirst());
- assertEquals("0.8 + 0.2 * rankingExpression(titlematch$@126063073eb2deb.ab95cd69909927c) + 0.8 * rankingExpression(titlematch$@c7e4c2d0e6d9f2a1.1d4ed08e56cce2e6) * closeness(distance)", rankProperties.get(5).getSecond());
+ assertEquals("rankingExpression(firstphase).rankingScript", rankProperties.get(6).getFirst());
+ assertEquals("0.8 + 0.2 * rankingExpression(titlematch$@126063073eb2deb.ab95cd69909927c) + 0.8 * rankingExpression(titlematch$@c7e4c2d0e6d9f2a1.1d4ed08e56cce2e6) * closeness(distance)", rankProperties.get(6).getSecond());
- assertEquals("rankingExpression(titlematch$@c7e4c2d0e6d9f2a1.1d4ed08e56cce2e6).rankingScript", rankProperties.get(3).getFirst());
- assertEquals("7 * 8 + 890", rankProperties.get(3).getSecond());
+ assertEquals("rankingExpression(titlematch$@c7e4c2d0e6d9f2a1.1d4ed08e56cce2e6).rankingScript", rankProperties.get(4).getFirst());
+ assertEquals("7 * 8 + 890", rankProperties.get(4).getSecond());
- assertEquals("rankingExpression(titlematch$@126063073eb2deb.ab95cd69909927c).rankingScript", rankProperties.get(2).getFirst());
- assertEquals("4 * 5 + 890", rankProperties.get(2).getSecond());
+ assertEquals("rankingExpression(artistmatch).type", rankProperties.get(2).getFirst());
+ assertEquals("tensor()", rankProperties.get(2).getSecond());
+
+ assertEquals("rankingExpression(titlematch$@126063073eb2deb.ab95cd69909927c).rankingScript", rankProperties.get(3).getFirst());
+ assertEquals("4 * 5 + 890", rankProperties.get(3).getSecond());
}
@Test(expected = IllegalArgumentException.class)
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java
index 87944b39ded..58131cf42a3 100644
--- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java
+++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java
@@ -82,8 +82,7 @@ public class SerializationContext extends FunctionReferenceContext {
/** Adds the serialization of the type of a function */
public void addFunctionTypeSerialization(String name, String expressionString) {
- // TODO: Enable
- // serializedFunctions.put(name, expressionString);
+ serializedFunctions.put(name, expressionString);
}
@Override