From 4289be15756bd05e880f41b1dd3e81cf054950f8 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Mon, 29 Jun 2020 11:07:22 +0200 Subject: Make tensor generate inspectable --- .../searchlib/rankingexpression/rule/TensorFunctionNode.java | 11 +++++++++++ .../transform/ConstantDereferencerTestCase.java | 2 ++ 2 files changed, 13 insertions(+) (limited to 'searchlib') diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java index befe2179dc1..86541343edb 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java @@ -25,6 +25,7 @@ import java.util.Deque; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -156,6 +157,11 @@ public class TensorFunctionNode extends CompositeNode { return expression.evaluate(new ContextWrapper(context)).asDouble(); } + @Override + public Optional> asTensorFunction() { + return Optional.of(new ExpressionTensorFunction(expression)); + } + @Override public String toString() { return toString(ExpressionToStringContext.empty); @@ -229,6 +235,11 @@ public class TensorFunctionNode extends CompositeNode { return expression.type(context); } + @Override + public Optional> asScalarFunction() { + return Optional.of(new ExpressionScalarFunction(expression)); + } + @Override public Tensor evaluate(EvaluationContext context) { return expression.evaluate((Context)context).asTensor(); diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencerTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencerTestCase.java index a41fb02f784..bfaff0712ee 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencerTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/ConstantDereferencerTestCase.java @@ -29,6 +29,8 @@ public class ConstantDereferencerTestCase { assertEquals("1.0 + 2.0 + 3.5", c.transform(new RankingExpression("a + b + c"), context).toString()); assertEquals("myFunction(1.0,2.0)", c.transform(new RankingExpression("myFunction(a, b)"), context).toString()); + assertEquals("tensor(x[2],y[3])((x + y == 1.0))", c.transform(new RankingExpression("tensor(x[2],y[3])(x+y==a)"), context).toString()); + } } -- cgit v1.2.3