diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2019-01-10 13:57:33 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2019-01-11 11:18:03 +0100 |
commit | 0719167b1ebdc03e79156dafded27edee3daa852 (patch) | |
tree | 35b3af70a492839d8fecf21c07c80d0cc1342ac5 /config-model | |
parent | 49f435b909ada503d89ade96effa645f9b1960dd (diff) |
Add getAttribute() method to ImmutableSDField interface.
Diffstat (limited to 'config-model')
8 files changed, 16 insertions, 22 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java index d94d072e75c..bc49c40e4e1 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java @@ -7,6 +7,7 @@ import com.yahoo.search.query.profile.QueryProfileRegistry; import com.yahoo.search.query.profile.types.FieldDescription; import com.yahoo.search.query.profile.types.QueryProfileType; import com.yahoo.search.query.ranking.Diversity; +import com.yahoo.searchdefinition.document.Attribute; import com.yahoo.searchdefinition.document.ImmutableSDField; import com.yahoo.searchdefinition.expressiontransforms.ExpressionTransforms; import com.yahoo.searchdefinition.expressiontransforms.RankProfileTransformContext; @@ -773,9 +774,10 @@ public class RankProfile implements Serializable, Cloneable { } private void addAttributeFeatureTypes(ImmutableSDField field, MapEvaluationTypeContext context) { + Attribute attribute = field.getAttribute(); field.getAttributes().forEach((k, a) -> { String name = k; - if (k.equals(field.getBackingField().getName())) // this attribute should take the fields name + if (attribute == a) // this attribute should take the fields name name = field.getName(); // switch to that - it is separate for imported fields context.setType(FeatureNames.asAttributeFeature(name), a.tensorType().orElse(TensorType.empty)); diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/ImportedFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/ImportedFields.java index 82b56f9c961..97faf6cabd6 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/ImportedFields.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/ImportedFields.java @@ -51,7 +51,7 @@ public class ImportedFields extends Derived implements ImportedFieldsConfig.Prod builder.attribute.add(createAttributeBuilder(field)); } } else { - Attribute attribute = targetField.getAttributes().get(targetFieldName); + Attribute attribute = targetField.getAttribute(); if (attribute != null) { builder.attribute.add(createAttributeBuilder(field)); } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java index 4f71bd90830..d658b6b425a 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java @@ -163,7 +163,7 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer { addIndexCommand(field, CMD_MULTIVALUE); } - Attribute attribute = getAttribute(field); + Attribute attribute = field.getAttribute(); if ((field.doesAttributing() || (attribute != null && !inPosition)) && !field.doesIndexing()) { addIndexCommand(field.getName(), CMD_ATTRIBUTE); if (attribute != null && attribute.isFastSearch()) @@ -195,13 +195,6 @@ public class IndexInfo extends Derived implements IndexInfoConfig.Producer { } - private static Attribute getAttribute(ImmutableSDField field) { - while (field.isImportedField()) { - field = field.getBackingField(); - } - return field.getAttributes().get(field.getName()); - } - static String stemCmd(ImmutableSDField field, Search search) { return CMD_STEM + ":" + field.getStemming(search).toStemMode(); } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedSDField.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedSDField.java index e1253d14747..be5f135f819 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedSDField.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedSDField.java @@ -101,6 +101,9 @@ public class ImmutableImportedSDField implements ImmutableSDField { } @Override + public Attribute getAttribute() { return importedField.targetField().getAttribute(); } + + @Override public Map<String, String> getAliasToName() { return Collections.emptyMap(); } diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableSDField.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableSDField.java index 21ef60cf0b9..15e75ad8314 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableSDField.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableSDField.java @@ -55,6 +55,8 @@ public interface ImmutableSDField { Map<String, Attribute> getAttributes(); + Attribute getAttribute(); + Map<String, String> getAliasToName(); ScriptExpression getIndexingScript(); diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java index 16e1e2e4e1d..049f5392c04 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java @@ -634,6 +634,10 @@ public class SDField extends Field implements TypedKey, FieldOperationContainer, @Override public Map<String, Attribute> getAttributes() { return attributes; } + public Attribute getAttribute() { + return attributes.get(getName()); + } + public void addAttribute(Attribute attribute) { String name = attribute.getName(); if (name == null || "".equals(name)) { 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 02957389995..9f8ac9230b8 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 @@ -111,10 +111,7 @@ public class AdjustPositionSummaryFields extends Processor { if (attribute == null) { ImmutableSDField field = search.getField(name); if (field != null && field.isImportedField()) { - while (field.isImportedField()) { - field = field.getBackingField(); - } - attribute = field.getAttributes().get(field.getName()); + attribute = field.getAttribute(); } } return attribute != null && attribute.isPosition(); 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 35e39022000..04abc8a421a 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 @@ -110,16 +110,9 @@ public class ImportedFieldsResolver extends Processor { return importedField.fieldName() + targetNestedField.getName().substring(importedField.targetFieldName().length()); } - private static Attribute getAttribute(ImmutableSDField field) { - while (field.isImportedField()) { - field = field.getBackingField(); - } - return field.getAttributes().get(field.getName()); - } - private boolean resolveImportedNestedField(TemporaryImportedField importedField, DocumentReference reference, ImportedComplexField owner, ImmutableSDField targetNestedField, boolean requireAttribute) { - Attribute attribute = getAttribute(targetNestedField); + Attribute attribute = targetNestedField.getAttribute(); String importedNestedFieldName = makeImportedNestedFieldName(importedField, targetNestedField); if (attribute != null) { makeImportedNormalField(importedField, owner, importedNestedFieldName, reference, targetNestedField); |