summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-04-04 10:02:52 +0200
committerJon Bratseth <bratseth@gmail.com>2022-04-04 10:02:52 +0200
commit5973587421282738babb1be7fe1cd45acd21ddfc (patch)
tree76913364cdc05fa420ed45687e3c426d7d554d14 /searchlib
parent00641e5eef7d792ff376d20922f451de042539c2 (diff)
Allow inputs declarations in rank profiles
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/Reference.java6
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/CompositeNode.java2
-rwxr-xr-xsearchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java10
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();
+ }
+
}