diff options
Diffstat (limited to 'searchlib')
4 files changed, 22 insertions, 15 deletions
diff --git a/searchlib/abi-spec.json b/searchlib/abi-spec.json index 9e958dd4d4c..fbb48f8edf6 100644 --- a/searchlib/abi-spec.json +++ b/searchlib/abi-spec.json @@ -333,6 +333,7 @@ "public int hashCode()", "public boolean equals(java.lang.Object)", "public java.lang.String toString()", + "public java.util.Map getRankProperties(com.yahoo.searchlib.rankingexpression.rule.SerializationContext)", "public java.util.Map getRankProperties(java.util.List)", "public static java.lang.String propertyName(java.lang.String)", "public com.yahoo.tensor.TensorType type(com.yahoo.tensor.evaluation.TypeContext)", @@ -1330,6 +1331,7 @@ "public int hashCode()", "public final boolean equals(java.lang.Object)", "public final java.lang.String toString()", + "public final java.lang.StringBuilder toString(com.yahoo.searchlib.rankingexpression.rule.SerializationContext)", "public abstract java.lang.StringBuilder toString(java.lang.StringBuilder, com.yahoo.searchlib.rankingexpression.rule.SerializationContext, java.util.Deque, com.yahoo.searchlib.rankingexpression.rule.CompositeNode)", "public abstract com.yahoo.tensor.TensorType type(com.yahoo.tensor.evaluation.TypeContext)", "public abstract com.yahoo.searchlib.rankingexpression.evaluation.Value evaluate(com.yahoo.searchlib.rankingexpression.evaluation.Context)" @@ -1581,6 +1583,8 @@ "public com.yahoo.searchlib.rankingexpression.rule.SerializationContext withBindings(java.util.Map)", "public com.yahoo.searchlib.rankingexpression.rule.SerializationContext withoutBindings()", "public java.util.Map serializedFunctions()", + "public java.lang.String uniqueName(java.lang.String)", + "public boolean needSerialization(java.lang.String)", "public bridge synthetic com.yahoo.searchlib.rankingexpression.rule.FunctionReferenceContext withoutBindings()", "public bridge synthetic com.yahoo.searchlib.rankingexpression.rule.FunctionReferenceContext withBindings(java.util.Map)" ], diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java index f666a55d5f5..3eb4f16a9dd 100755 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java @@ -250,12 +250,9 @@ public class RankingExpression implements Serializable { /** * Creates the necessary rank properties required to implement this expression. * - * @param functions the expression functions to expand + * @param context context for serialization * @return a list of named rank properties required to implement this expression */ - public Map<String, String> getRankProperties(List<ExpressionFunction> functions) { - return getRankProperties(new SerializationContext(functions)); - } public Map<String, String> getRankProperties(SerializationContext context) { Deque<String> path = new LinkedList<>(); String serializedRoot = root.toString(new StringBuilder(), context, path, null).toString(); @@ -264,6 +261,11 @@ public class RankingExpression implements Serializable { return serializedExpressions; } + @Deprecated + public Map<String, String> getRankProperties(List<ExpressionFunction> functions) { + return getRankProperties(new SerializationContext(functions)); + } + /** * Returns the rank-property name for a given expression name. * diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ExpressionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ExpressionNode.java index 07de5812c91..151b70d763d 100755 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ExpressionNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ExpressionNode.java @@ -30,10 +30,10 @@ public abstract class ExpressionNode implements Serializable { @Override public final String toString() { - return toString(new StringBuilder(), new SerializationContext(), null, null).toString(); + return toString(new SerializationContext()).toString(); } - public final String toString(SerializationContext context) { - return toString(new StringBuilder(), context, null, null).toString(); + public final StringBuilder toString(SerializationContext context) { + return toString(new StringBuilder(), context, null, null); } /** diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java index ea09de32137..092faa1934e 100755 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java @@ -9,6 +9,7 @@ import com.yahoo.searchlib.rankingexpression.rule.IfNode; import com.yahoo.searchlib.rankingexpression.rule.ExpressionNode; import com.yahoo.searchlib.rankingexpression.rule.FunctionNode; import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode; +import com.yahoo.searchlib.rankingexpression.rule.SerializationContext; import com.yahoo.searchlib.rankingexpression.rule.TensorFunctionNode; import com.yahoo.tensor.functions.Reduce; import org.junit.Test; @@ -92,7 +93,7 @@ public class RankingExpressionTestCase { RankingExpression exp = new RankingExpression("foo"); try { - exp.getRankProperties(functions); + exp.getRankProperties(new SerializationContext(functions)); } catch (RuntimeException e) { assertEquals("Cycle in ranking expression function: [foo[]]", e.getMessage()); } @@ -100,13 +101,13 @@ public class RankingExpressionTestCase { @Test public void testFunctionCycleSerialization() throws ParseException { - List<ExpressionFunction> funnctions = new ArrayList<>(); - funnctions.add(new ExpressionFunction("foo", null, new RankingExpression("bar"))); - funnctions.add(new ExpressionFunction("bar", null, new RankingExpression("foo"))); + List<ExpressionFunction> functions = new ArrayList<>(); + functions.add(new ExpressionFunction("foo", null, new RankingExpression("bar"))); + functions.add(new ExpressionFunction("bar", null, new RankingExpression("foo"))); RankingExpression exp = new RankingExpression("foo"); try { - exp.getRankProperties(funnctions); + exp.getRankProperties(new SerializationContext(functions)); } catch (RuntimeException e) { assertEquals("Cycle in ranking expression function: [foo[], bar[]]", e.getMessage()); } @@ -350,7 +351,7 @@ public class RankingExpressionTestCase { try { RankingExpression expression = new RankingExpression(expressionString); // No functions -> expect one rank property - serializedExpression = expression.getRankProperties(Collections.emptyList()).values().iterator().next(); + serializedExpression = expression.getRankProperties(new SerializationContext()).values().iterator().next(); assertEquals(expectedSerialization, serializedExpression); } catch (ParseException e) { @@ -363,7 +364,7 @@ public class RankingExpressionTestCase { RankingExpression reparsedExpression = new RankingExpression(serializedExpression); // Serializing the primitivized expression should yield the same expression again String reserializedExpression = - reparsedExpression.getRankProperties(Collections.emptyList()).values().iterator().next(); + reparsedExpression.getRankProperties(new SerializationContext()).values().iterator().next(); assertEquals(expectedSerialization, reserializedExpression); } catch (ParseException e) { @@ -383,7 +384,7 @@ public class RankingExpressionTestCase { System.out.println("Parsing expression '" + expressionString + "':"); RankingExpression expression = new RankingExpression(expressionString); - Map<String, String> rankProperties = expression.getRankProperties(functions); + Map<String, String> rankProperties = expression.getRankProperties(new SerializationContext(functions)); if (print) { for (String key : rankProperties.keySet()) System.out.println(key + ": " + rankProperties.get(key)); |