diff options
author | Arne Juul <arnej@yahooinc.com> | 2023-03-02 11:03:21 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2023-03-02 11:03:21 +0000 |
commit | fe2e8db7891c39559622ab4c3bbfc3fc5275fe1f (patch) | |
tree | 111304123505463894c74f19c473c3e9dacddea9 /searchlib/src/main/java/com | |
parent | 00dc5f3e7bb3905702b87873e61a20bf91842b0d (diff) |
add public constant and utility for wrapping references
as rankingExpression(foo); avoid double wrapping.
Diffstat (limited to 'searchlib/src/main/java/com')
-rw-r--r-- | searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/Reference.java | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/Reference.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/Reference.java index eaecdf78162..64b251c0cd4 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/Reference.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/Reference.java @@ -120,17 +120,30 @@ public class Reference extends Name implements Comparable<Reference> { return toString(new StringBuilder(), new SerializationContext(), null, null).toString(); } + public static final String RANKING_EXPRESSION_WRAPPER = "rankingExpression"; + + public static String wrapInRankingExpression(String name) { + return RANKING_EXPRESSION_WRAPPER + "(" + name + ")"; + } + + public boolean isSimpleRankingExpressionWrapper() { + return name().equals(RANKING_EXPRESSION_WRAPPER) && isSimple(); + } + public StringBuilder toString(StringBuilder b, SerializationContext context, Deque<String> path, CompositeNode parent) { b.append(name()); if (arguments.expressions().size() > 0) { b.append("("); - for (int i = 0; i < arguments.expressions().size(); i++) { - ExpressionNode e = arguments.expressions().get(i); - e.toString(b, context, path, parent); - if (i+1 < arguments.expressions().size()) { - b.append(','); + if (isSimpleRankingExpressionWrapper()) { + b.append(simpleArgument().get()); + } else { + for (int i = 0; i < arguments.expressions().size(); i++) { + ExpressionNode e = arguments.expressions().get(i); + e.toString(b, context, path, parent); + if (i+1 < arguments.expressions().size()) { + b.append(','); + } } - } b.append(")"); } |