diff options
author | Jon Bratseth <bratseth@oath.com> | 2020-06-26 11:29:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-26 11:29:58 +0200 |
commit | 472bea6c64a4c18be5097dd0cbb1078579ba580e (patch) | |
tree | b161c9197090c20b686d187f0b711225c9b3cb11 /indexinglanguage | |
parent | ee0e08c1fce8e86d2c96ea4173d68190e2373d6c (diff) | |
parent | b4a8a1555fd5693c54a3fd71fce1666ee87be0bf (diff) |
Merge pull request #13696 from vespa-engine/bratseth/handle-existing-spanTree-rebased
Handle an existing spantree in exactmatch
Diffstat (limited to 'indexinglanguage')
2 files changed, 13 insertions, 6 deletions
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExactExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExactExpression.java index 14b5af53b5a..31633cdc88b 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExactExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExactExpression.java @@ -27,24 +27,30 @@ public final class ExactExpression extends Expression { @Override protected void doExecute(ExecutionContext ctx) { StringFieldValue input = (StringFieldValue)ctx.getValue(); - if (input.getString().isEmpty()) { - return; - } + if (input.getString().isEmpty()) return; + StringFieldValue output = input.clone(); ctx.setValue(output); String prev = output.getString(); String next = toLowerCase(prev); - SpanList root = new SpanList(); - SpanTree tree = new SpanTree(SpanTrees.LINGUISTICS, root); + SpanTree tree = output.getSpanTree(SpanTrees.LINGUISTICS); + SpanList root; + if (tree == null) { + root = new SpanList(); + tree = new SpanTree(SpanTrees.LINGUISTICS, root); + output.setSpanTree(tree); + } + else { + root = (SpanList)tree.getRoot(); + } SpanNode node = new Span(0, prev.length()); tree.annotate(node, new Annotation(AnnotationTypes.TERM, next.equals(prev) ? null : new StringFieldValue(next))); tree.annotate(node, new Annotation(AnnotationTypes.TOKEN_TYPE, new IntegerFieldValue(TokenType.ALPHABETIC.getValue()))); root.add(node); - output.setSpanTree(tree); } @Override diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenExpression.java index e43744420f8..91f46381def 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/FlattenExpression.java @@ -24,6 +24,7 @@ public final class FlattenExpression extends Expression { public FlattenExpression() { super(DataType.STRING); } + @Override protected void doExecute(ExecutionContext ctx) { StringFieldValue input = (StringFieldValue)ctx.getValue(); |