summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java31
1 files changed, 17 insertions, 14 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java
index 99cbf633221..420d0fc619b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/IndexingOutputs.java
@@ -16,11 +16,11 @@ import com.yahoo.vespa.model.container.search.QueryProfiles;
import java.util.*;
/**
- * <p>This processor modifies all indexing scripts so that they output to the owning field by default. It also prevents
+ * This processor modifies all indexing scripts so that they output to the owning field by default. It also prevents
* any output expression from writing to any field except for the owning field. Finally, for <tt>SummaryExpression</tt>,
- * this processor expands to write all appropriate summary fields.</p>
+ * this processor expands to write all appropriate summary fields.
*
- * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a>
+ * @author Simon Thoresen
*/
public class IndexingOutputs extends Processor {
@@ -29,21 +29,19 @@ public class IndexingOutputs extends Processor {
}
@Override
- public void process() {
+ public void process(boolean validate) {
for (SDField field : search.allConcreteFields()) {
ScriptExpression script = field.getIndexingScript();
- if (script == null) {
- continue;
- }
+ if (script == null) continue;
+
Set<String> summaryFields = new TreeSet<>();
findSummaryTo(search, field, summaryFields, summaryFields);
- MyConverter converter = new MyConverter(search, field, summaryFields);
+ MyConverter converter = new MyConverter(search, field, summaryFields, validate);
field.setIndexingScript((ScriptExpression)converter.convert(script));
}
}
- public void findSummaryTo(Search search, SDField field, Set<String> dynamicSummary,
- Set<String> staticSummary) {
+ public void findSummaryTo(Search search, SDField field, Set<String> dynamicSummary, Set<String> staticSummary) {
Map<String, SummaryField> summaryFields = search.getSummaryFields(field);
if (summaryFields.isEmpty()) {
fillSummaryToFromField(field, dynamicSummary, staticSummary);
@@ -59,7 +57,8 @@ public class IndexingOutputs extends Processor {
}
}
- private void fillSummaryToFromSummaryField(Search search, SDField field, SummaryField summaryField, Set<String> dynamicSummary, Set<String> staticSummary) {
+ private void fillSummaryToFromSummaryField(Search search, SDField field, SummaryField summaryField,
+ Set<String> dynamicSummary, Set<String> staticSummary) {
SummaryTransform summaryTransform = summaryField.getTransform();
String summaryName = summaryField.getName();
if (summaryTransform.isDynamic() && summaryField.getSourceCount() > 2) {
@@ -98,23 +97,25 @@ public class IndexingOutputs extends Processor {
final Search search;
final Field field;
final Set<String> summaryFields;
+ final boolean validate;
- MyConverter(Search search, Field field, Set<String> summaryFields) {
+ MyConverter(Search search, Field field, Set<String> summaryFields, boolean validate) {
this.search = search;
this.field = field;
this.summaryFields = summaryFields.isEmpty() ? Collections.singleton(field.getName()) : summaryFields;
+ this.validate = validate;
}
@Override
protected boolean shouldConvert(Expression exp) {
- if (!(exp instanceof OutputExpression)) {
+ if ( ! (exp instanceof OutputExpression)) {
return false;
}
String fieldName = ((OutputExpression)exp).getFieldName();
if (fieldName == null) {
return true; // inject appropriate field name
}
- if (!fieldName.equals(field.getName())) {
+ if ( validate && ! fieldName.equals(field.getName())) {
fail(search, field, "Indexing expression '" + exp + "' attempts to write to a field other than '" +
field.getName() + "'.");
}
@@ -137,5 +138,7 @@ public class IndexingOutputs extends Processor {
}
return new StatementExpression(ret);
}
+
}
+
}