summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java')
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java92
1 files changed, 54 insertions, 38 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java
index 9e6d59ed25f..2482c9a1c91 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java
@@ -26,6 +26,8 @@ import java.util.Map;
*/
public class AttributeFields extends Derived implements AttributesConfig.Producer {
+ public enum FieldSet {ALL, FAST_ACCESS}
+
private Map<String, Attribute> attributes = new java.util.LinkedHashMap<>();
/**
@@ -124,48 +126,62 @@ public class AttributeFields extends Derived implements AttributesConfig.Produce
@Override
public void getConfig(AttributesConfig.Builder builder) {
- for (Attribute attribute : attributes.values()) {
- AttributesConfig.Attribute.Builder aaB = new AttributesConfig.Attribute.Builder()
+ getConfig(builder, FieldSet.ALL);
+ }
+
+ private boolean isAttributeInFieldSet(Attribute attribute, FieldSet fs) {
+ return (fs == FieldSet.ALL) || ((fs == FieldSet.FAST_ACCESS) && attribute.isFastAccess());
+ }
+
+ private AttributesConfig.Attribute.Builder getConfig(Attribute attribute) {
+ AttributesConfig.Attribute.Builder aaB = new AttributesConfig.Attribute.Builder()
.name(attribute.getName())
.datatype(AttributesConfig.Attribute.Datatype.Enum.valueOf(attribute.getType().getExportAttributeTypeName()))
.collectiontype(AttributesConfig.Attribute.Collectiontype.Enum.valueOf(attribute.getCollectionType().getName()));
- if (attribute.isRemoveIfZero()) {
- aaB.removeifzero(true);
- }
- if (attribute.isCreateIfNonExistent()) {
- aaB.createifnonexistent(true);
- }
- aaB.enablebitvectors(attribute.isEnabledBitVectors());
- aaB.enableonlybitvector(attribute.isEnabledOnlyBitVector());
- if (attribute.isFastSearch()) {
- aaB.fastsearch(true);
- }
- if (attribute.isFastAccess()) {
- aaB.fastaccess(true);
- }
- if (attribute.isHuge()) {
- aaB.huge(true);
- }
- if (attribute.getSorting().isDescending()) {
- aaB.sortascending(false);
- }
- if (attribute.getSorting().getFunction() != Sorting.Function.UCA) {
- aaB.sortfunction(AttributesConfig.Attribute.Sortfunction.Enum.valueOf(attribute.getSorting().getFunction().toString()));
- }
- if (attribute.getSorting().getStrength() != Sorting.Strength.PRIMARY) {
- aaB.sortstrength(AttributesConfig.Attribute.Sortstrength.Enum.valueOf(attribute.getSorting().getStrength().toString()));
- }
- if (!attribute.getSorting().getLocale().isEmpty()) {
- aaB.sortlocale(attribute.getSorting().getLocale());
- }
- aaB.arity(attribute.arity());
- aaB.lowerbound(attribute.lowerBound());
- aaB.upperbound(attribute.upperBound());
- aaB.densepostinglistthreshold(attribute.densePostingListThreshold());
- if (attribute.tensorType().isPresent()) {
- aaB.tensortype(attribute.tensorType().get().toString());
+ if (attribute.isRemoveIfZero()) {
+ aaB.removeifzero(true);
+ }
+ if (attribute.isCreateIfNonExistent()) {
+ aaB.createifnonexistent(true);
+ }
+ aaB.enablebitvectors(attribute.isEnabledBitVectors());
+ aaB.enableonlybitvector(attribute.isEnabledOnlyBitVector());
+ if (attribute.isFastSearch()) {
+ aaB.fastsearch(true);
+ }
+ if (attribute.isFastAccess()) {
+ aaB.fastaccess(true);
+ }
+ if (attribute.isHuge()) {
+ aaB.huge(true);
+ }
+ if (attribute.getSorting().isDescending()) {
+ aaB.sortascending(false);
+ }
+ if (attribute.getSorting().getFunction() != Sorting.Function.UCA) {
+ aaB.sortfunction(AttributesConfig.Attribute.Sortfunction.Enum.valueOf(attribute.getSorting().getFunction().toString()));
+ }
+ if (attribute.getSorting().getStrength() != Sorting.Strength.PRIMARY) {
+ aaB.sortstrength(AttributesConfig.Attribute.Sortstrength.Enum.valueOf(attribute.getSorting().getStrength().toString()));
+ }
+ if (!attribute.getSorting().getLocale().isEmpty()) {
+ aaB.sortlocale(attribute.getSorting().getLocale());
+ }
+ aaB.arity(attribute.arity());
+ aaB.lowerbound(attribute.lowerBound());
+ aaB.upperbound(attribute.upperBound());
+ aaB.densepostinglistthreshold(attribute.densePostingListThreshold());
+ if (attribute.tensorType().isPresent()) {
+ aaB.tensortype(attribute.tensorType().get().toString());
+ }
+ return aaB;
+ }
+
+ public void getConfig(AttributesConfig.Builder builder, FieldSet fs) {
+ for (Attribute attribute : attributes.values()) {
+ if (isAttributeInFieldSet(attribute, fs)) {
+ builder.attribute(getConfig(attribute));
}
- builder.attribute(aaB);
}
}
}