aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2019-01-10 13:57:33 +0100
committerTor Egge <Tor.Egge@broadpark.no>2019-01-11 11:18:03 +0100
commit0719167b1ebdc03e79156dafded27edee3daa852 (patch)
tree35b3af70a492839d8fecf21c07c80d0cc1342ac5 /config-model/src
parent49f435b909ada503d89ade96effa645f9b1960dd (diff)
Add getAttribute() method to ImmutableSDField interface.
Diffstat (limited to 'config-model/src')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/ImportedFields.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/IndexInfo.java9
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableImportedSDField.java3
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/ImmutableSDField.java2
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/document/SDField.java4
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/AdjustPositionSummaryFields.java5
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/processing/ImportedFieldsResolver.java9
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);