summaryrefslogtreecommitdiffstats
path: root/indexinglanguage
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@vespa.ai>2024-02-08 18:02:24 +0100
committerJon Bratseth <bratseth@vespa.ai>2024-02-08 18:02:24 +0100
commita5544d5eef5c7a0f5a8ab30781cd6b04a31bde76 (patch)
tree573917f49d788cba051dcb908d1b6e45bc35665f /indexinglanguage
parent2885e639279cb6b0b6d9cc44bc9c15d3969a522a (diff)
Pass embedder arguments
Diffstat (limited to 'indexinglanguage')
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java15
-rw-r--r--indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java1
2 files changed, 12 insertions, 4 deletions
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java
index 5daf74a9723..8ae28799230 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/EmbedExpression.java
@@ -17,6 +17,7 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
/**
* Embeds a string in a tensor space using the configured Embedder component
@@ -196,17 +197,23 @@ public class EmbedExpression extends Expression {
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("embed");
- if (this.embedderId != null && this.embedderId.length() > 0) {
+ if (this.embedderId != null && !this.embedderId.isEmpty())
sb.append(" ").append(this.embedderId);
- }
+ embedderArguments.forEach(arg -> sb.append(" ").append(arg));
return sb.toString();
}
@Override
- public int hashCode() { return 98857339; }
+ public int hashCode() { return Objects.hash(embedder.hashCode(), embedder, embedderArguments); }
@Override
- public boolean equals(Object o) { return o instanceof EmbedExpression; }
+ public boolean equals(Object o) {
+ if ( ! super.equals(o)) return false;
+ if ( ! (o instanceof EmbedExpression other)) return false;
+ if ( ! Objects.equals(embedder, other.embedder)) return false;
+ if ( ! Objects.equals(embedderArguments, other.embedderArguments)) return false;
+ return true;
+ }
private static String validEmbedders(Map<String, Embedder> embedders) {
List<String> embedderIds = new ArrayList<>();
diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java
index 7fe55b738df..06ff6bc85b1 100644
--- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java
+++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/ScriptTestCase.java
@@ -358,6 +358,7 @@ public class ScriptTestCase {
var expression = Expression.fromString("input myTextArray | embed emb1 passage | attribute 'mySparseTensor'",
new SimpleLinguistics(),
embedders);
+ assertEquals("input myTextArray | embed emb1 passage | attribute mySparseTensor", expression.toString());
SimpleTestAdapter adapter = new SimpleTestAdapter();
adapter.createField(new Field("myTextArray", new ArrayDataType(DataType.STRING)));