summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-03-29 13:04:18 +0200
committerBjørn Christian Seime <bjorncs@yahoo-inc.com>2017-04-03 11:20:28 +0200
commit2b6924ad487df4ade66bf4560280b3a8d3d006d4 (patch)
treebcebd4ba272232a9ce19f53d1b87a8e94218c75b /config-model
parent124bd9621af39329d2dcc3dcb1009cd9a8ed6595 (diff)
Allow any document field as source for summary field
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java11
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java7
3 files changed, 12 insertions, 8 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java
index 091bf662460..9588c08439b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddExtraFieldsToDocument.java
@@ -8,6 +8,7 @@ import com.yahoo.document.Field;
import com.yahoo.document.PositionDataType;
import com.yahoo.searchdefinition.Search;
import com.yahoo.searchdefinition.document.Attribute;
+import com.yahoo.searchdefinition.document.ImmutableSDField;
import com.yahoo.searchdefinition.document.SDDocumentType;
import com.yahoo.searchdefinition.document.SDField;
import com.yahoo.vespa.documentmodel.SummaryField;
@@ -58,12 +59,14 @@ public class AddExtraFieldsToDocument extends Processor {
private void addSummaryField(Search search, SDDocumentType document, SummaryField field) {
Field docField = document.getField(field.getName());
if (docField == null) {
- SDField newField = search.getConcreteField(field.getName());
- if (newField == null) {
- newField = new SDField(document, field.getName(), field.getDataType(), field.isHeader(), true);
+ ImmutableSDField existingField = search.getField(field.getName());
+ if (existingField == null) {
+ SDField newField = new SDField(document, field.getName(), field.getDataType(), field.isHeader(), true);
newField.setIsExtraField(true);
+ document.addField(newField);
+ } else if (!existingField.isImportedField()) {
+ document.addField(existingField.asField());
}
- document.addField(newField);
} else if (!docField.getDataType().equals(field.getDataType())) {
throw newProcessException(search, field, "Summary field has conflicting type.");
}
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java
index 0f6ed328ea9..f725113f5ab 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/Processing.java
@@ -41,6 +41,7 @@ public class Processing {
CreatePositionZCurve::new,
WordMatch::new,
DeprecateAttributePrefetch::new,
+ ImportedFieldsResolver::new,
ImplicitSummaries::new,
ImplicitSummaryFields::new,
SummaryConsistency::new,
@@ -63,7 +64,6 @@ public class Processing {
ValidateFieldTypes::new,
DisallowComplexMapAndWsetKeyTypes::new,
SortingSettings::new,
- ImportedFieldsResolver::new,
FieldSetValidity::new,
AddExtraFieldsToDocument::new,
PredicateProcessor::new,
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java
index 0dacb3064ec..ce1fe9e951e 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java
@@ -57,14 +57,15 @@ public class SummaryFieldsMustHaveValidSource extends Processor {
}
}
- private boolean isNotInThisSummaryClass(DocumentSummary summary, String name) {
+ private static boolean isNotInThisSummaryClass(DocumentSummary summary, String name) {
return summary.getSummaryField(name) == null;
}
- private boolean isInThisSummaryClass(DocumentSummary summary, String name) {
+
+ private static boolean isInThisSummaryClass(DocumentSummary summary, String name) {
return summary.getSummaryField(name) != null;
}
private boolean isDocumentField(String name) {
- return search.getConcreteField(name) != null;
+ return search.getField(name) != null;
}
private boolean isSummaryField(String name) {