diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-06-09 14:21:12 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-06-09 14:40:57 +0200 |
commit | 379114c17138c12cb8dd4dd6b05099ea9dfdd84c (patch) | |
tree | 56162da31db7382a3cedae352830cecc1f66acaa /searchlib | |
parent | ce0d7152953752769403555dc53adeb7bff809fd (diff) |
Unify how property names are generated and decomposed.
Diffstat (limited to 'searchlib')
3 files changed, 31 insertions, 3 deletions
diff --git a/searchlib/abi-spec.json b/searchlib/abi-spec.json index 2d006bbd973..5035a5f583f 100644 --- a/searchlib/abi-spec.json +++ b/searchlib/abi-spec.json @@ -336,6 +336,8 @@ "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 static java.lang.String propertyExpressionName(java.lang.String)", + "public static java.lang.String extractScriptName(java.lang.String)", "public com.yahoo.tensor.TensorType type(com.yahoo.tensor.evaluation.TypeContext)", "public com.yahoo.searchlib.rankingexpression.evaluation.Value evaluate(com.yahoo.searchlib.rankingexpression.evaluation.Context)", "public static com.yahoo.searchlib.rankingexpression.RankingExpression from(java.lang.String)" 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 3eb4f16a9dd..cdaaba34a44 100755 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/RankingExpression.java @@ -81,6 +81,9 @@ public class RankingExpression implements Serializable { private String name = ""; private ExpressionNode root; + private final static String RANKEXPRESSION = "rankingExpression("; + private final static String RANKINGSCRIPT = ").rankingScript"; + private final static String EXPRESSION_NAME = ").expressionName"; /** Creates an anonymous ranking expression by consuming from the reader */ public RankingExpression(Reader reader) throws ParseException { @@ -273,7 +276,16 @@ public class RankingExpression implements Serializable { * @return the property name. */ public static String propertyName(String expressionName) { - return "rankingExpression(" + expressionName + ").rankingScript"; + return RANKEXPRESSION + expressionName + RANKINGSCRIPT; + } + public static String propertyExpressionName(String expressionName) { + return RANKEXPRESSION + expressionName + EXPRESSION_NAME; + } + public static String extractScriptName(String propertyName) { + if (propertyName.startsWith(RANKEXPRESSION) && propertyName.endsWith(RANKINGSCRIPT)) { + return propertyName.substring(RANKEXPRESSION.length(), propertyName.length() - RANKINGSCRIPT.length()); + } + return 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 092faa1934e..4214727eb5f 100755 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/RankingExpressionTestCase.java @@ -14,6 +14,7 @@ import com.yahoo.searchlib.rankingexpression.rule.TensorFunctionNode; import com.yahoo.tensor.functions.Reduce; import org.junit.Test; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; @@ -23,10 +24,13 @@ import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.Map; -import java.util.concurrent.*; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; /** * @author Simon Thoresen Hult @@ -208,6 +212,16 @@ public class RankingExpressionTestCase { } @Test + public void testPropertyName() { + assertEquals("rankingExpression(m4).rankingScript", RankingExpression.propertyName("m4")); + assertEquals("m4", RankingExpression.extractScriptName("rankingExpression(m4).rankingScript")); + assertNull(RankingExpression.extractScriptName("rankingexpression(m4).rankingScript")); + assertNull(RankingExpression.extractScriptName("rankingExpression(m4).rankingscript")); + + assertEquals("rankingExpression(m4).expressionName", RankingExpression.propertyExpressionName("m4")); + } + + @Test public void testBug3464208() throws ParseException { List<ExpressionFunction> functions = new ArrayList<>(); functions.add(new ExpressionFunction("log10tweetage", null, new RankingExpression("69"))); |