summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/processing
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2019-01-10 15:33:47 +0100
committerTor Egge <Tor.Egge@broadpark.no>2019-01-11 11:18:03 +0100
commit714931304b90a3438c4b048f5b4f94119dac2b23 (patch)
treed4abe5a03366e85274bb3179a976d0405d419c5f /config-model/src/main/java/com/yahoo/searchdefinition/processing
parent0719167b1ebdc03e79156dafded27edee3daa852 (diff)
Stop flattening imported fields.
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/processing')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java18
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFields.java13
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java30
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/SummaryFieldsMustHaveValidSource.java1
4 files changed, 27 insertions, 35 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java
index 6a1275a73d9..59dc4275e15 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AddAttributeTransformToSummaryOfImportedFields.java
@@ -4,7 +4,9 @@ package com.yahoo.searchdefinition.processing;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.searchdefinition.RankProfileRegistry;
import com.yahoo.searchdefinition.Search;
+import com.yahoo.searchdefinition.document.ImmutableImportedComplexSDField;
import com.yahoo.searchdefinition.document.ImmutableSDField;
+import com.yahoo.searchdefinition.document.ImportedComplexField;
import com.yahoo.vespa.documentmodel.SummaryField;
import com.yahoo.vespa.documentmodel.SummaryTransform;
import com.yahoo.vespa.model.container.search.QueryProfiles;
@@ -30,19 +32,21 @@ public class AddAttributeTransformToSummaryOfImportedFields extends Processor {
@Override
public void process(boolean validate, boolean documentsOnly) {
search.allImportedFields()
- .flatMap(this::getSummaryFieldsForImportedField)
- .forEach(AddAttributeTransformToSummaryOfImportedFields::setAttributeTransform);
- search.importedFields().map(fields -> fields.complexFields().values().stream()).
- orElse(Stream.empty()).
- map(field -> field.asImmutableSDField()).
- flatMap(this::getSummaryFieldsForImportedField).
- forEach(AddAttributeTransformToSummaryOfImportedFields::setAttributeCombinerTransform);
+ .forEach(field -> setTransform(field));
}
private Stream<SummaryField> getSummaryFieldsForImportedField(ImmutableSDField importedField) {
return search.getSummaryFields(importedField).values().stream();
}
+ private void setTransform(ImmutableSDField field) {
+ if (field instanceof ImmutableImportedComplexSDField) {
+ getSummaryFieldsForImportedField(field).forEach(AddAttributeTransformToSummaryOfImportedFields::setAttributeCombinerTransform);
+ } else {
+ getSummaryFieldsForImportedField(field).forEach(AddAttributeTransformToSummaryOfImportedFields::setAttributeTransform);
+ }
+ }
+
private static void setAttributeTransform(SummaryField summaryField) {
if (summaryField.getTransform() == SummaryTransform.NONE) {
summaryField.setTransform(SummaryTransform.ATTRIBUTE);
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFields.java
index 9f8ac9230b8..e59fcdf3dd0 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFields.java
@@ -42,7 +42,7 @@ public class AdjustPositionSummaryFields extends Processor {
if (isPositionDataType(summaryField.getDataType())) {
String originalSource = summaryField.getSingleSource();
if (originalSource.indexOf('.') == -1) { // Eliminate summary fields with pos.x or pos.y as source
- ImmutableSDField sourceField = getSourceField(originalSource);
+ ImmutableSDField sourceField = search.getField(originalSource);
if (sourceField != null) {
String zCurve = null;
if (sourceField.getDataType().equals(summaryField.getDataType())) {
@@ -95,17 +95,6 @@ public class AdjustPositionSummaryFields extends Processor {
summary.add(oldField);
}
- private ImmutableSDField getSourceField(String name) {
- ImmutableSDField field = search.getField(name);
- if (field == null && search.importedFields().isPresent()) {
- ImportedField importedField = search.importedFields().get().complexFields().get(name);
- if (importedField != null) {
- field = importedField.asImmutableSDField();
- }
- }
- return field;
- }
-
private boolean hasPositionAttribute(String name) {
Attribute attribute = search.getAttribute(name);
if (attribute == null) {
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java
index 04abc8a421a..d6c334ee80b 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java
@@ -33,7 +33,6 @@ import static com.yahoo.searchdefinition.document.ComplexAttributeFieldUtils.isM
public class ImportedFieldsResolver extends Processor {
private final Map<String, ImportedField> importedFields = new LinkedHashMap<>();
- private final Map<String, ImportedField> importedComplexFields = new LinkedHashMap<>();
private final Optional<DocumentReferences> references;
public ImportedFieldsResolver(Search search, DeployLogger deployLogger, RankProfileRegistry rankProfileRegistry, QueryProfiles queryProfiles) {
@@ -44,7 +43,7 @@ public class ImportedFieldsResolver extends Processor {
@Override
public void process(boolean validate, boolean documentsOnly) {
search.temporaryImportedFields().get().fields().forEach((name, field) -> resolveImportedField(field, validate));
- search.setImportedFields(new ImportedFields(importedFields, importedComplexFields));
+ search.setImportedFields(new ImportedFields(importedFields));
}
private void resolveImportedField(TemporaryImportedField importedField, boolean validate) {
@@ -71,14 +70,14 @@ public class ImportedFieldsResolver extends Processor {
ImmutableSDField targetZCurveField = getTargetField(importedZCurveField, reference);
resolveImportedNormalField(importedZCurveField, reference, targetZCurveField, validate);
ImportedComplexField importedStructField = new ImportedComplexField(importedField.fieldName(), reference, targetField);
- registerImportedComplexField(importedStructField);
+ registerImportedField(importedField, null, importedStructField);
}
private void resolveImportedArrayOfStructField(TemporaryImportedField importedField, DocumentReference reference,
ImmutableSDField targetField, boolean validate) {
ImportedComplexField importedStructField = new ImportedComplexField(importedField.fieldName(), reference, targetField);
resolveImportedNestedStructField(importedField, reference, importedStructField, targetField, validate);
- registerImportedComplexField(importedStructField);
+ registerImportedField(importedField, null, importedStructField);
}
private void resolveImportedMapOfStructField(TemporaryImportedField importedField, DocumentReference reference,
@@ -88,22 +87,23 @@ public class ImportedFieldsResolver extends Processor {
importedMapField.addNestedField(importedStructField);
resolveImportedNestedField(importedField, reference, importedMapField, targetField.getStructField("key"), validate);
resolveImportedNestedStructField(importedField, reference, importedStructField, importedStructField.targetField(), validate);
- registerImportedComplexField(importedMapField);
+ registerImportedField(importedField, null, importedMapField);
}
private void makeImportedNormalField(TemporaryImportedField importedField, ImportedComplexField owner, String name, DocumentReference reference, ImmutableSDField targetField) {
- if (importedFields.get(name) != null) {
- fail(importedField, name, targetFieldAsString(targetField.getName(), reference) +": Field already imported");
- }
ImportedField importedSimpleField = new ImportedSimpleField(name, reference, targetField);
- importedFields.put(name, importedSimpleField);
- if (owner != null) {
- owner.addNestedField(importedSimpleField);
- }
+ registerImportedField(importedField, owner, importedSimpleField);
}
- private void registerImportedComplexField(ImportedComplexField importedComplexField) {
- importedComplexFields.put(importedComplexField.fieldName(), importedComplexField);;
+ private void registerImportedField(TemporaryImportedField temporaryImportedField, ImportedComplexField owner, ImportedField importedField) {
+ if (owner != null) {
+ owner.addNestedField(importedField);
+ } else {
+ if (importedFields.get(importedField.fieldName()) != null) {
+ fail(temporaryImportedField, importedField.fieldName(), targetFieldAsString(importedField.targetField().getName(), importedField.reference()) + ": Field already imported");
+ }
+ importedFields.put(importedField.fieldName(), importedField);
+ }
}
private static String makeImportedNestedFieldName(TemporaryImportedField importedField, ImmutableSDField targetNestedField) {
@@ -143,7 +143,7 @@ public class ImportedFieldsResolver extends Processor {
ImportedComplexField importedMapField = new ImportedComplexField(importedField.fieldName(), reference, targetField);
resolveImportedNestedField(importedField, reference, importedMapField, targetField.getStructField("key"), validate);
resolveImportedNestedField(importedField, reference, importedMapField, targetField.getStructField("value"), validate);
- registerImportedComplexField(importedMapField);
+ registerImportedField(importedField, null, importedMapField);
}
private void resolveImportedNormalField(TemporaryImportedField importedField, DocumentReference reference,
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 008b3182d8f..c87801685bb 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
@@ -51,7 +51,6 @@ public class SummaryFieldsMustHaveValidSource extends Processor {
return isDocumentField(source) ||
(isNotInThisSummaryClass(summary, source) && isSummaryField(source)) ||
(isInThisSummaryClass(summary, source) && !source.equals(summaryField.getName())) ||
- (search.importedFields().map(fields -> fields.complexFields().get(source) != null).orElse(false)) ||
(SummaryClass.DOCUMENT_ID_FIELD.equals(source));
}