aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/IndexingScript.java33
1 files changed, 27 insertions, 6 deletions
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) {