diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-04-04 10:02:52 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-04-04 10:02:52 +0200 |
commit | 5973587421282738babb1be7fe1cd45acd21ddfc (patch) | |
tree | 76913364cdc05fa420ed45687e3c426d7d554d14 /searchlib | |
parent | 00641e5eef7d792ff376d20922f451de042539c2 (diff) |
Allow inputs declarations in rank profiles
Diffstat (limited to 'searchlib')
3 files changed, 11 insertions, 7 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 75bbe55128c..656463a7b45 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/Reference.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/Reference.java @@ -12,6 +12,7 @@ import com.yahoo.tensor.evaluation.Name; import java.util.Deque; import java.util.Objects; import java.util.Optional; +import java.util.regex.Pattern; /** * A reference to a feature, function, or value in ranking expressions @@ -30,7 +31,11 @@ public class Reference extends Name implements Comparable<Reference> { /** True if this was created by the "fromIdentifier" method. This lets us separate 'foo()' and 'foo' */ private final boolean isIdentifier; + private final static Pattern identifierPattern = Pattern.compile("[A-Za-z0-9_@.\"-]+"); + public static Reference fromIdentifier(String identifier) { + if ( ! identifierPattern.matcher(identifier).matches()) + throw new IllegalArgumentException("Identifiers can only contain [A-Za-z0-9_]+, but was '" + identifier + "'"); return new Reference(identifier, Arguments.EMPTY, null, true); } @@ -48,7 +53,6 @@ public class Reference extends Name implements Comparable<Reference> { this.isIdentifier = isIdentifier; } - public Arguments arguments() { return arguments; } public String output() { return output; } diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/CompositeNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/CompositeNode.java index 6fdb233299b..451a961f641 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/CompositeNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/CompositeNode.java @@ -11,7 +11,7 @@ import java.util.List; public abstract class CompositeNode extends ExpressionNode { /** - * <p>Returns a read-only list containing the immediate children of this composite</p> + * Returns a read-only list containing the immediate children of this composite. * * @return The children of this. */ diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java index 8ac1829b16b..aa6a6df0960 100755 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java @@ -42,11 +42,6 @@ public final class ReferenceNode extends CompositeNode { return reference.name(); } - @Override - public int hashCode() { - return reference.hashCode(); - } - /** Returns the arguments, never null */ public Arguments getArguments() { return reference.arguments(); } @@ -138,4 +133,9 @@ public final class ReferenceNode extends CompositeNode { return setArguments(newChildren); } + @Override + public int hashCode() { + return reference.hashCode(); + } + } |