diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2024-01-12 20:39:27 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-12 20:39:27 +0100 |
commit | 001002a94807f13d662874209ccd5f351d20f2a3 (patch) | |
tree | 8993208169aa39fcccdaec20268c4b10d0412516 /config-model/src/main/java/com/yahoo | |
parent | 93487568d51d94b05e073fd37a99880fbad54e10 (diff) |
Revert "Revert "Drop tokenize expressions from ilscript for streaming mode.""
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
3 files changed, 28 insertions, 8 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/Schema.java b/config-model/src/main/java/com/yahoo/schema/Schema.java index 279b5729ea1..3402ba31be9 100644 --- a/config-model/src/main/java/com/yahoo/schema/Schema.java +++ b/config-model/src/main/java/com/yahoo/schema/Schema.java @@ -18,7 +18,6 @@ import com.yahoo.schema.document.SDDocumentType; import com.yahoo.schema.document.SDField; import com.yahoo.schema.document.Stemming; import com.yahoo.schema.document.TemporaryImportedFields; -import com.yahoo.schema.document.annotation.SDAnnotationType; import com.yahoo.searchlib.rankingexpression.Reference; import com.yahoo.vespa.documentmodel.DocumentSummary; import com.yahoo.vespa.documentmodel.SummaryField; diff --git a/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java b/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java index 7f874d04f13..575b7264628 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java @@ -80,7 +80,7 @@ public class DerivedConfiguration implements AttributesConfig.Producer { summaries = new Summaries(schema, deployState.getDeployLogger(), deployState.getProperties().featureFlags()); juniperrc = new Juniperrc(schema); rankProfileList = new RankProfileList(schema, schema.rankExpressionFiles(), attributeFields, deployState); - indexingScript = new IndexingScript(schema); + indexingScript = new IndexingScript(schema, isStreaming); indexInfo = new IndexInfo(schema, isStreaming); schemaInfo = new SchemaInfo(schema, deployState.rankProfileRegistry(), summaries); indexSchema = new IndexSchema(schema); diff --git a/config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java b/config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java index 73f3507ab00..6f0420f5203 100644 --- a/config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java +++ b/config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java @@ -6,6 +6,7 @@ import com.yahoo.schema.document.GeoPos; import com.yahoo.schema.document.ImmutableSDField; import com.yahoo.vespa.configdefinition.IlscriptsConfig; import com.yahoo.vespa.configdefinition.IlscriptsConfig.Ilscript.Builder; +import com.yahoo.vespa.indexinglanguage.ExpressionConverter; import com.yahoo.vespa.indexinglanguage.ExpressionVisitor; import com.yahoo.vespa.indexinglanguage.expressions.ClearStateExpression; import com.yahoo.vespa.indexinglanguage.expressions.Expression; @@ -16,6 +17,7 @@ import com.yahoo.vespa.indexinglanguage.expressions.PassthroughExpression; import com.yahoo.vespa.indexinglanguage.expressions.ScriptExpression; import com.yahoo.vespa.indexinglanguage.expressions.SetLanguageExpression; import com.yahoo.vespa.indexinglanguage.expressions.StatementExpression; +import com.yahoo.vespa.indexinglanguage.expressions.TokenizeExpression; import com.yahoo.vespa.indexinglanguage.expressions.ZCurveExpression; import java.util.ArrayList; @@ -36,8 +38,10 @@ public final class IndexingScript extends Derived implements IlscriptsConfig.Pro private final List<String> docFields = new ArrayList<>(); private final List<Expression> expressions = new ArrayList<>(); private List<ImmutableSDField> fieldsSettingLanguage; + private final boolean isStreaming; - public IndexingScript(Schema schema) { + public IndexingScript(Schema schema, boolean isStreaming) { + this.isStreaming = isStreaming; derive(schema); } @@ -96,21 +100,38 @@ public final class IndexingScript extends Derived implements IlscriptsConfig.Pro configBuilder.ilscript(ilscriptBuilder); } + private static class DropTokenize extends ExpressionConverter { + @Override + protected boolean shouldConvert(Expression exp) { + return exp instanceof TokenizeExpression; + } + + @Override + protected Expression doConvert(Expression exp) { + return null; + } + } + private void addContentInOrder(IlscriptsConfig.Ilscript.Builder ilscriptBuilder) { ArrayList<Expression> later = new ArrayList<>(); Set<String> touchedFields = new HashSet<>(); for (Expression expression : expressions) { - if (modifiesSelf(expression) && ! setsLanguage(expression)) + if (isStreaming) { + expression = expression.convertChildren(new DropTokenize()); + } + if (modifiesSelf(expression) && ! setsLanguage(expression)) { later.add(expression); - else + } else { ilscriptBuilder.content(expression.toString()); + } FieldScanVisitor fieldFetcher = new FieldScanVisitor(); fieldFetcher.visit(expression); touchedFields.addAll(fieldFetcher.touchedFields()); } - for (Expression exp : later) + for (Expression exp : later) { ilscriptBuilder.content(exp.toString()); + } generateSyntheticStatementsForUntouchedFields(ilscriptBuilder, touchedFields); } @@ -171,8 +192,8 @@ public final class IndexingScript extends Derived implements IlscriptsConfig.Pro } private static class FieldScanVisitor extends ExpressionVisitor { - List<String> touchedFields = new ArrayList<String>(); - List<String> candidates = new ArrayList<String>(); + List<String> touchedFields = new ArrayList<>(); + List<String> candidates = new ArrayList<>(); @Override protected void doVisit(Expression exp) { |