summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2022-08-29 09:25:05 +0000
committerGeir Storli <geirst@yahooinc.com>2022-08-29 11:58:21 +0000
commite1ade5e0aa7087b8ff6380bd28764f732131c3f5 (patch)
treef17caf0234881d52c30fb31506bb7055e692bf89 /config-model
parentee29a7aeb10021c55064f6c5268daefe23897f0d (diff)
Duplicate summarymap config into summary config.
This prepares for the removal of summarymap config.
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java12
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/SummaryClassField.java11
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/SummaryMap.java70
-rw-r--r--config-model/src/test/derived/advanced/summary.cfg24
-rw-r--r--config-model/src/test/derived/array_of_struct_attribute/summary.cfg14
-rw-r--r--config-model/src/test/derived/attributeprefetch/summary.cfg22
-rw-r--r--config-model/src/test/derived/complex/summary.cfg36
-rw-r--r--config-model/src/test/derived/emptychild/summary.cfg14
-rw-r--r--config-model/src/test/derived/emptydefault/summary.cfg6
-rw-r--r--config-model/src/test/derived/id/summary.cfg8
-rw-r--r--config-model/src/test/derived/imported_position_field/summary.cfg12
-rw-r--r--config-model/src/test/derived/imported_position_field_summary/summary.cfg20
-rw-r--r--config-model/src/test/derived/imported_struct_fields/summary.cfg34
-rw-r--r--config-model/src/test/derived/importedfields/summary.cfg32
-rw-r--r--config-model/src/test/derived/indexswitches/summary.cfg12
-rw-r--r--config-model/src/test/derived/inheritance/summary.cfg18
-rw-r--r--config-model/src/test/derived/integerattributetostringindex/summary.cfg24
-rw-r--r--config-model/src/test/derived/map_attribute/summary.cfg10
-rw-r--r--config-model/src/test/derived/map_of_struct_attribute/summary.cfg20
-rw-r--r--config-model/src/test/derived/mlr/summary.cfg18
-rw-r--r--config-model/src/test/derived/multiplesummaries/summary.cfg158
-rw-r--r--config-model/src/test/derived/music/summary.cfg98
-rw-r--r--config-model/src/test/derived/newrank/summary.cfg92
-rw-r--r--config-model/src/test/derived/position_nosummary/summary.cfg12
-rw-r--r--config-model/src/test/derived/position_summary/summary.cfg14
-rw-r--r--config-model/src/test/derived/predicate_attribute/summary.cfg12
-rw-r--r--config-model/src/test/derived/rankingexpression/summary.cfg36
-rw-r--r--config-model/src/test/derived/ranktypes/summary.cfg10
-rw-r--r--config-model/src/test/derived/reference_fields/summary.cfg18
-rw-r--r--config-model/src/test/derived/schemainheritance/summary.cfg36
-rw-r--r--config-model/src/test/derived/streamingstruct/summary.cfg46
-rw-r--r--config-model/src/test/derived/streamingstructdefault/summary.cfg12
-rw-r--r--config-model/src/test/derived/tensor/summary.cfg20
-rw-r--r--config-model/src/test/derived/types/summary.cfg38
-rw-r--r--config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java81
35 files changed, 1014 insertions, 86 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java b/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java
index efc64a5aa40..9cd5d901574 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java
@@ -59,7 +59,7 @@ public class SummaryClass extends Derived {
/** MUST be called after all other fields are added */
private void deriveImplicitFields(DocumentSummary summary, Map<String, SummaryClassField> fields) {
if (summary.getName().equals("default")) {
- addField(SummaryClass.DOCUMENT_ID_FIELD, DataType.STRING, SummaryTransform.DOCUMENT_ID, fields);
+ addField(SummaryClass.DOCUMENT_ID_FIELD, DataType.STRING, SummaryTransform.DOCUMENT_ID, "", fields);
}
}
@@ -68,12 +68,14 @@ public class SummaryClass extends Derived {
if (!accessingDiskSummary && schema.isAccessingDiskSummary(summaryField)) {
accessingDiskSummary = true;
}
- addField(summaryField.getName(), summaryField.getDataType(), summaryField.getTransform(), fields);
+ addField(summaryField.getName(), summaryField.getDataType(), summaryField.getTransform(),
+ SummaryMap.getSource(summaryField), fields);
}
}
private void addField(String name, DataType type,
SummaryTransform transform,
+ String source,
Map<String, SummaryClassField> fields) {
if (fields.containsKey(name)) {
SummaryClassField sf = fields.get(name);
@@ -82,7 +84,7 @@ public class SummaryClass extends Derived {
". " + "Declared as type " + sf.getType() + " and " + type);
}
} else {
- fields.put(name, new SummaryClassField(name, type, transform, rawAsBase64));
+ fields.put(name, new SummaryClassField(name, type, transform, source, rawAsBase64));
}
}
@@ -110,7 +112,9 @@ public class SummaryClass extends Derived {
for (SummaryClassField field : fields.values() ) {
classBuilder.fields(new SummaryConfig.Classes.Fields.Builder().
name(field.getName()).
- type(field.getType().getName()));
+ type(field.getType().getName()).
+ command(field.getCommand()).
+ source(field.getSource()));
}
return classBuilder;
}
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/SummaryClassField.java b/config-model/src/main/java/com/yahoo/schema/derived/SummaryClassField.java
index f042054a0b5..00972895306 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/SummaryClassField.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/SummaryClassField.java
@@ -28,8 +28,9 @@ import com.yahoo.vespa.documentmodel.SummaryTransform;
public class SummaryClassField {
private final String name;
-
private final Type type;
+ private final String command;
+ private final String source;
/** The summary field type enumeration */
public enum Type {
@@ -68,15 +69,21 @@ public class SummaryClassField {
}
}
- public SummaryClassField(String name, DataType type, SummaryTransform transform, boolean rawAsBase64) {
+ public SummaryClassField(String name, DataType type, SummaryTransform transform, String source, boolean rawAsBase64) {
this.name = name;
this.type = convertDataType(type, transform, rawAsBase64);
+ this.command = SummaryMap.getCommand(transform);
+ this.source = source;
}
public String getName() { return name; }
public Type getType() { return type; }
+ public String getCommand() { return command; }
+
+ public String getSource() { return source; }
+
/** Converts to the right summary field type from a field datatype and a transform*/
public static Type convertDataType(DataType fieldType, SummaryTransform transform, boolean rawAsBase64) {
FieldValue fval = fieldType.createFieldValue();
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/SummaryMap.java b/config-model/src/main/java/com/yahoo/schema/derived/SummaryMap.java
index 9d3d00f1481..cecf3ecdd85 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/SummaryMap.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/SummaryMap.java
@@ -49,31 +49,14 @@ public class SummaryMap extends Derived implements SummarymapConfig.Producer {
private void derive(DocumentSummary documentSummary) {
for (SummaryField summaryField : documentSummary.getSummaryFields().values()) {
- if (summaryField.getTransform()== SummaryTransform.NONE) continue;
-
- if (summaryField.getTransform()==SummaryTransform.ATTRIBUTE ||
- (summaryField.getTransform()==SummaryTransform.ATTRIBUTECOMBINER && summaryField.hasExplicitSingleSource()) ||
- summaryField.getTransform()==SummaryTransform.COPY ||
- summaryField.getTransform()==SummaryTransform.DISTANCE ||
- summaryField.getTransform()==SummaryTransform.GEOPOS ||
- summaryField.getTransform()==SummaryTransform.POSITIONS ||
- summaryField.getTransform()==SummaryTransform.MATCHED_ELEMENTS_FILTER ||
- summaryField.getTransform()==SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER)
- {
- resultTransforms.put(summaryField.getName(), new FieldResultTransform(summaryField.getName(),
- summaryField.getTransform(),
- summaryField.getSingleSource()));
- } else {
- // Note: Currently source mapping is handled in the indexing statement,
- // by creating a summary field for each of the values
- // This works, but is suboptimal. We could consolidate to a minimal set and
- // use the right value from the minimal set as the third parameter here,
- // and add "override" commands to multiple static values
- boolean useFieldNameAsArgument = summaryField.getTransform().isDynamic();
- resultTransforms.put(summaryField.getName(), new FieldResultTransform(summaryField.getName(),
- summaryField.getTransform(),
- useFieldNameAsArgument ? summaryField.getName() : ""));
+ if (summaryField.getTransform()== SummaryTransform.NONE) {
+ continue;
}
+
+ resultTransforms.put(summaryField.getName(),
+ new FieldResultTransform(summaryField.getName(),
+ summaryField.getTransform(),
+ getSource(summaryField)));
}
}
@@ -85,13 +68,42 @@ public class SummaryMap extends Derived implements SummarymapConfig.Producer {
protected String getDerivedName() { return "summarymap"; }
/** Returns the command name of a transform */
- private String getCommand(SummaryTransform transform) {
- if (transform == SummaryTransform.DISTANCE)
+ static String getCommand(SummaryTransform transform) {
+ if (transform == SummaryTransform.NONE) {
+ return "";
+ } else if (transform == SummaryTransform.DISTANCE) {
return "absdist";
- else if (transform.isDynamic())
+ } else if (transform.isDynamic()) {
return "dynamicteaser";
- else
+ } else {
return transform.getName();
+ }
+ }
+
+ static String getSource(SummaryField summaryField) {
+ if (summaryField.getTransform() == SummaryTransform.NONE) {
+ return "";
+ }
+
+ if (summaryField.getTransform() == SummaryTransform.ATTRIBUTE ||
+ (summaryField.getTransform() == SummaryTransform.ATTRIBUTECOMBINER && summaryField.hasExplicitSingleSource()) ||
+ summaryField.getTransform() == SummaryTransform.COPY ||
+ summaryField.getTransform() == SummaryTransform.DISTANCE ||
+ summaryField.getTransform() == SummaryTransform.GEOPOS ||
+ summaryField.getTransform() == SummaryTransform.POSITIONS ||
+ summaryField.getTransform() == SummaryTransform.MATCHED_ELEMENTS_FILTER ||
+ summaryField.getTransform() == SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER)
+ {
+ return summaryField.getSingleSource();
+ } else {
+ // Note: Currently source mapping is handled in the indexing statement,
+ // by creating a summary field for each of the values
+ // This works, but is suboptimal. We could consolidate to a minimal set and
+ // use the right value from the minimal set as the third parameter here,
+ // and add "override" commands to multiple static values
+ boolean useFieldNameAsArgument = summaryField.getTransform().isDynamic();
+ return useFieldNameAsArgument ? summaryField.getName() : "";
+ }
}
/**
@@ -100,7 +112,7 @@ public class SummaryMap extends Derived implements SummarymapConfig.Producer {
* A dynamic transform needs the query to perform its computations.
*/
// TODO/Note: "dynamic" here means something else than in SummaryTransform
- public static boolean isDynamicCommand(String commandName) {
+ static boolean isDynamicCommand(String commandName) {
return (commandName.equals("dynamicteaser") ||
commandName.equals(SummaryTransform.MATCHED_ELEMENTS_FILTER.getName()) ||
commandName.equals(SummaryTransform.MATCHED_ATTRIBUTE_ELEMENTS_FILTER.getName()));
diff --git a/config-model/src/test/derived/advanced/summary.cfg b/config-model/src/test/derived/advanced/summary.cfg
index 18d67a9ea84..11a73d6a90c 100644
--- a/config-model/src/test/derived/advanced/summary.cfg
+++ b/config-model/src/test/derived/advanced/summary.cfg
@@ -5,28 +5,52 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "debug"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "attributes"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "title_s"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "product"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "product3"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "mysummary"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 472092010
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "location_zcurve"
classes[].fields[].type "int64"
+classes[].fields[].command "attribute"
+classes[].fields[].source "location_zcurve"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/array_of_struct_attribute/summary.cfg b/config-model/src/test/derived/array_of_struct_attribute/summary.cfg
index 38298feaa0c..e62a8a5c39c 100644
--- a/config-model/src/test/derived/array_of_struct_attribute/summary.cfg
+++ b/config-model/src/test/derived/array_of_struct_attribute/summary.cfg
@@ -5,18 +5,32 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "elem_array"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "attributecombiner"
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 659145226
classes[].name "rename"
classes[].omitsummaryfeatures false
classes[].fields[].name "new_elem_array"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "attributecombiner"
+classes[].fields[].source "elem_array"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/attributeprefetch/summary.cfg b/config-model/src/test/derived/attributeprefetch/summary.cfg
index 7fabb674ebd..e2ed135c3a2 100644
--- a/config-model/src/test/derived/attributeprefetch/summary.cfg
+++ b/config-model/src/test/derived/attributeprefetch/summary.cfg
@@ -5,26 +5,48 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 1980470965
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "singlebyte"
classes[].fields[].type "byte"
+classes[].fields[].command "attribute"
+classes[].fields[].source "singlebyte"
classes[].fields[].name "singleint"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "singleint"
classes[].fields[].name "singlelong"
classes[].fields[].type "int64"
+classes[].fields[].command "attribute"
+classes[].fields[].source "singlelong"
classes[].fields[].name "singlefloat"
classes[].fields[].type "float"
+classes[].fields[].command "attribute"
+classes[].fields[].source "singlefloat"
classes[].fields[].name "singledouble"
classes[].fields[].type "double"
+classes[].fields[].command "attribute"
+classes[].fields[].source "singledouble"
classes[].fields[].name "singlestring"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "singlestring"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/complex/summary.cfg b/config-model/src/test/derived/complex/summary.cfg
index 44b97327ee9..1d6f7141635 100644
--- a/config-model/src/test/derived/complex/summary.cfg
+++ b/config-model/src/test/derived/complex/summary.cfg
@@ -5,40 +5,76 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "woe"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "exact"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "title"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "dyntitle"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "dyntitle"
classes[].fields[].name "source"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "stringfield"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 128090024
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "year_sub"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "year_sub"
classes[].fields[].name "prefixenabled"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "prefixenabled"
classes[].fields[].name "fleeting2"
classes[].fields[].type "float"
+classes[].fields[].command "attribute"
+classes[].fields[].source "fleeting2"
classes[].fields[].name "foundat"
classes[].fields[].type "int64"
+classes[].fields[].command "attribute"
+classes[].fields[].source "foundat"
classes[].fields[].name "collapseby"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "collapseby"
classes[].fields[].name "ts"
classes[].fields[].type "int64"
+classes[].fields[].command "attribute"
+classes[].fields[].source "ts"
classes[].fields[].name "combineda"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "combineda"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/emptychild/summary.cfg b/config-model/src/test/derived/emptychild/summary.cfg
index 116bad51740..5fe39cbb04c 100644
--- a/config-model/src/test/derived/emptychild/summary.cfg
+++ b/config-model/src/test/derived/emptychild/summary.cfg
@@ -5,18 +5,32 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "a1"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "a1"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 1490368133
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "a1"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "a1"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/emptydefault/summary.cfg b/config-model/src/test/derived/emptydefault/summary.cfg
index f1a858d2d1e..c09b606210f 100644
--- a/config-model/src/test/derived/emptydefault/summary.cfg
+++ b/config-model/src/test/derived/emptydefault/summary.cfg
@@ -5,7 +5,13 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/id/summary.cfg b/config-model/src/test/derived/id/summary.cfg
index 6880a8a7bd5..203be8549b8 100644
--- a/config-model/src/test/derived/id/summary.cfg
+++ b/config-model/src/test/derived/id/summary.cfg
@@ -5,9 +5,17 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "uri"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/imported_position_field/summary.cfg b/config-model/src/test/derived/imported_position_field/summary.cfg
index b324b4cd8e4..c3f3e45e2f0 100644
--- a/config-model/src/test/derived/imported_position_field/summary.cfg
+++ b/config-model/src/test/derived/imported_position_field/summary.cfg
@@ -5,16 +5,28 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "parent_ref"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 1274088866
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/imported_position_field_summary/summary.cfg b/config-model/src/test/derived/imported_position_field_summary/summary.cfg
index cf80a3f31d0..06fca8c89a1 100644
--- a/config-model/src/test/derived/imported_position_field_summary/summary.cfg
+++ b/config-model/src/test/derived/imported_position_field_summary/summary.cfg
@@ -5,27 +5,47 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "parent_ref"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "my_pos"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "geopos"
+classes[].fields[].source "my_pos_zcurve"
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 656588065
classes[].name "mysummary"
classes[].omitsummaryfeatures false
classes[].fields[].name "my_pos"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "geopos"
+classes[].fields[].source "my_pos_zcurve"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 1274088866
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/imported_struct_fields/summary.cfg b/config-model/src/test/derived/imported_struct_fields/summary.cfg
index 38fdd23123b..46a6a7db64f 100644
--- a/config-model/src/test/derived/imported_struct_fields/summary.cfg
+++ b/config-model/src/test/derived/imported_struct_fields/summary.cfg
@@ -5,44 +5,78 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "parent_ref"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 2126652894
classes[].name "mysummary"
classes[].omitsummaryfeatures false
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].fields[].name "my_elem_array"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "attributecombiner"
+classes[].fields[].source ""
classes[].fields[].name "my_elem_map"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "attributecombiner"
+classes[].fields[].source ""
classes[].fields[].name "my_str_int_map"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "attributecombiner"
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 1629947863
classes[].name "filtered"
classes[].omitsummaryfeatures false
classes[].fields[].name "elem_array_filtered"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "matchedattributeelementsfilter"
+classes[].fields[].source "my_elem_array"
classes[].fields[].name "elem_map_filtered"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "matchedattributeelementsfilter"
+classes[].fields[].source "my_elem_map"
classes[].fields[].name "str_int_map_filtered"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "matchedattributeelementsfilter"
+classes[].fields[].source "my_str_int_map"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 1274088866
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/importedfields/summary.cfg b/config-model/src/test/derived/importedfields/summary.cfg
index 4b792d15de9..2614bea2092 100644
--- a/config-model/src/test/derived/importedfields/summary.cfg
+++ b/config-model/src/test/derived/importedfields/summary.cfg
@@ -5,39 +5,71 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "b_ref_with_summary"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 159551552
classes[].name "mysummary"
classes[].omitsummaryfeatures false
classes[].fields[].name "a_ref"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "b_ref_with_summary"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "my_int_field"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "my_int_field"
classes[].fields[].name "my_string_field"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "my_string_field"
classes[].fields[].name "my_int_array_field"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "my_int_array_field"
classes[].fields[].name "my_int_wset_field"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "my_int_wset_field"
classes[].fields[].name "my_ancient_int_field"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "my_ancient_int_field"
classes[].fields[].name "my_filtered_int_array_field"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "matchedattributeelementsfilter"
+classes[].fields[].source "my_int_array_field"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 1274088866
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/indexswitches/summary.cfg b/config-model/src/test/derived/indexswitches/summary.cfg
index a58d5da25e1..edc38aacf89 100644
--- a/config-model/src/test/derived/indexswitches/summary.cfg
+++ b/config-model/src/test/derived/indexswitches/summary.cfg
@@ -5,13 +5,25 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "source"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "title"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "descr"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/inheritance/summary.cfg b/config-model/src/test/derived/inheritance/summary.cfg
index 6d30c0ad231..7615429bebf 100644
--- a/config-model/src/test/derived/inheritance/summary.cfg
+++ b/config-model/src/test/derived/inheritance/summary.cfg
@@ -5,22 +5,40 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "onlyfather"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 1608562186
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "onlygrandparent"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "onlygrandparent"
classes[].fields[].name "overridden"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "overridden"
classes[].fields[].name "onlymother"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "onlymother"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/integerattributetostringindex/summary.cfg b/config-model/src/test/derived/integerattributetostringindex/summary.cfg
index 9c2c8f4cd0e..87a6539de56 100644
--- a/config-model/src/test/derived/integerattributetostringindex/summary.cfg
+++ b/config-model/src/test/derived/integerattributetostringindex/summary.cfg
@@ -5,28 +5,52 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "attinx"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "attinx"
classes[].fields[].name "artist"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "artist"
classes[].fields[].name "title"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "year"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "year"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 1706878063
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "attinx"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "attinx"
classes[].fields[].name "artist"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "artist"
classes[].fields[].name "year"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "year"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/map_attribute/summary.cfg b/config-model/src/test/derived/map_attribute/summary.cfg
index b5ee816719e..a18ca43bbd7 100644
--- a/config-model/src/test/derived/map_attribute/summary.cfg
+++ b/config-model/src/test/derived/map_attribute/summary.cfg
@@ -5,11 +5,21 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "str_map"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "attributecombiner"
+classes[].fields[].source ""
classes[].fields[].name "int_map"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/map_of_struct_attribute/summary.cfg b/config-model/src/test/derived/map_of_struct_attribute/summary.cfg
index 997743389c6..c871c4bb97e 100644
--- a/config-model/src/test/derived/map_of_struct_attribute/summary.cfg
+++ b/config-model/src/test/derived/map_of_struct_attribute/summary.cfg
@@ -5,24 +5,44 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "str_elem_map"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "attributecombiner"
+classes[].fields[].source ""
classes[].fields[].name "int_elem_map"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "new_int_elem_map"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "copy"
+classes[].fields[].source "int_elem_map"
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 1424421039
classes[].name "rename"
classes[].omitsummaryfeatures false
classes[].fields[].name "new_str_elem_map"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "attributecombiner"
+classes[].fields[].source "str_elem_map"
classes[].fields[].name "new_int_elem_map"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "copy"
+classes[].fields[].source "int_elem_map"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/mlr/summary.cfg b/config-model/src/test/derived/mlr/summary.cfg
index 0345ec305ae..8087955a206 100644
--- a/config-model/src/test/derived/mlr/summary.cfg
+++ b/config-model/src/test/derived/mlr/summary.cfg
@@ -5,22 +5,40 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "a"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "a"
classes[].fields[].name "b"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 1944325986
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "a"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "a"
classes[].fields[].name "ranklog"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "ranklog"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/multiplesummaries/summary.cfg b/config-model/src/test/derived/multiplesummaries/summary.cfg
index c05cb43dade..17d7040bc78 100644
--- a/config-model/src/test/derived/multiplesummaries/summary.cfg
+++ b/config-model/src/test/derived/multiplesummaries/summary.cfg
@@ -5,192 +5,350 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "loc_pos"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "geopos"
+classes[].fields[].source "loc_pos_zcurve"
classes[].fields[].name "a"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "a"
classes[].fields[].name "adynamic"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "adynamic"
classes[].fields[].name "abolded"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "abolded"
classes[].fields[].name "b"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "c"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "c"
classes[].fields[].name "d"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "d"
classes[].fields[].name "dynamice"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "dynamice"
classes[].fields[].name "f"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "g"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "h"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "e"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "adynamic2"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "adynamic2"
classes[].fields[].name "alltags"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "sometags"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "matchedelementsfilter"
+classes[].fields[].source "mytags"
classes[].fields[].name "anotherb"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "abolded2"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "abolded2"
classes[].fields[].name "aboldeddynamic"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "aboldeddynamic"
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 783153771
classes[].name "third"
classes[].omitsummaryfeatures false
classes[].fields[].name "a"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "a"
classes[].fields[].name "adynamic"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "adynamic"
classes[].fields[].name "d"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "d"
classes[].fields[].name "e"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "f"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "g"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "h"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 815922035
classes[].name "attributesonly1"
classes[].omitsummaryfeatures false
classes[].fields[].name "a"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "a"
classes[].fields[].name "c"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "c"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 1308077923
classes[].name "notattributesonly1"
classes[].omitsummaryfeatures false
classes[].fields[].name "adynamic"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "adynamic"
classes[].fields[].name "c"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "c"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 1609068631
classes[].name "anothernotattributesonly2"
classes[].omitsummaryfeatures false
classes[].fields[].name "adynamic2"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "adynamic2"
classes[].fields[].name "c"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "c"
classes[].fields[].name "alltags"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "sometags"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "matchedelementsfilter"
+classes[].fields[].source "mytags"
classes[].fields[].name "anothera"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "a"
classes[].fields[].name "anotherb"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 686755772
classes[].name "notattributesonly3"
classes[].omitsummaryfeatures false
classes[].fields[].name "a"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "a"
classes[].fields[].name "d"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "d"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 1711750363
classes[].name "attributesonly2"
classes[].omitsummaryfeatures false
classes[].fields[].name "anotdynamic"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "adynamic"
classes[].fields[].name "c"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "c"
classes[].fields[].name "loc_position"
classes[].fields[].type "int64"
+classes[].fields[].command "attribute"
+classes[].fields[].source "loc_pos_zcurve"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 1510953467
classes[].name "attributesonly3"
classes[].omitsummaryfeatures false
classes[].fields[].name "a"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "a"
classes[].fields[].name "anotbolded"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "a"
classes[].fields[].name "loc_pos_zcurve"
classes[].fields[].type "int64"
+classes[].fields[].command "attribute"
+classes[].fields[].source "loc_pos_zcurve"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 923824943
classes[].name "notattributesonly4"
classes[].omitsummaryfeatures false
classes[].fields[].name "abolded2"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "abolded2"
classes[].fields[].name "c"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "c"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 552611075
classes[].name "notattributesonly5"
classes[].omitsummaryfeatures false
classes[].fields[].name "aboldeddynamic"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "aboldeddynamic"
classes[].fields[].name "c"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "c"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 146047714
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "loc_pos_zcurve"
classes[].fields[].type "int64"
+classes[].fields[].command "attribute"
+classes[].fields[].source "loc_pos_zcurve"
classes[].fields[].name "a"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "a"
classes[].fields[].name "c"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "c"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 324773027
classes[].name "second"
classes[].omitsummaryfeatures false
classes[].fields[].name "a"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "a"
classes[].fields[].name "adynamic"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "adynamic"
classes[].fields[].name "c"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "c"
classes[].fields[].name "f"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/music/summary.cfg b/config-model/src/test/derived/music/summary.cfg
index 007c2ef3345..10bb238dca7 100644
--- a/config-model/src/test/derived/music/summary.cfg
+++ b/config-model/src/test/derived/music/summary.cfg
@@ -5,102 +5,200 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "bgndata"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "bgndata"
classes[].fields[].name "sales"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "sales"
classes[].fields[].name "pto"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "pto"
classes[].fields[].name "mid"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "mid"
classes[].fields[].name "ew"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "ew"
classes[].fields[].name "surl"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "userrate"
classes[].fields[].type "integer"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "pid"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "weight"
classes[].fields[].type "float"
+classes[].fields[].command "attribute"
+classes[].fields[].source "weight"
classes[].fields[].name "url"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "isbn"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "fmt"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "albumid"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "disp_song"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "song"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "song"
classes[].fields[].name "pfrom"
classes[].fields[].type "integer"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "bgnpfrom"
classes[].fields[].type "float"
+classes[].fields[].command "attribute"
+classes[].fields[].source "bgnpfrom"
classes[].fields[].name "categories"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "data"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "numreview"
classes[].fields[].type "integer"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "bgnsellers"
classes[].fields[].type "integer"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "image"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "artist"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "artistspid"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "title"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "newestedition"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "newestedition"
classes[].fields[].name "bgnpto"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "bgnpto"
classes[].fields[].name "year"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "year"
classes[].fields[].name "did"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "did"
classes[].fields[].name "scorekey"
classes[].fields[].type "integer"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "cbid"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "cbid"
classes[].fields[].name "metalvalue"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "hiphopvalue"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "powermetalvalue"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "progvalue"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 2060710706
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "sales"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "sales"
classes[].fields[].name "pto"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "pto"
classes[].fields[].name "mid"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "mid"
classes[].fields[].name "weight"
classes[].fields[].type "float"
+classes[].fields[].command "attribute"
+classes[].fields[].source "weight"
classes[].fields[].name "bgnpfrom"
classes[].fields[].type "float"
+classes[].fields[].command "attribute"
+classes[].fields[].source "bgnpfrom"
classes[].fields[].name "newestedition"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "newestedition"
classes[].fields[].name "year"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "year"
classes[].fields[].name "did"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "did"
classes[].fields[].name "cbid"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "cbid"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/newrank/summary.cfg b/config-model/src/test/derived/newrank/summary.cfg
index 7f77633602e..79e0aa2ce6c 100644
--- a/config-model/src/test/derived/newrank/summary.cfg
+++ b/config-model/src/test/derived/newrank/summary.cfg
@@ -5,96 +5,188 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "bgndata"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "bgndata"
classes[].fields[].name "sales"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "sales"
classes[].fields[].name "pto"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "pto"
classes[].fields[].name "mid"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "mid"
classes[].fields[].name "ew"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "ew"
classes[].fields[].name "surl"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "userrate"
classes[].fields[].type "integer"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "pid"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "weight"
classes[].fields[].type "float"
+classes[].fields[].command "attribute"
+classes[].fields[].source "weight"
classes[].fields[].name "url"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "isbn"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "fmt"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "albumid"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "disp_song"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "song"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "song"
classes[].fields[].name "pfrom"
classes[].fields[].type "integer"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "bgnpfrom"
classes[].fields[].type "float"
+classes[].fields[].command "attribute"
+classes[].fields[].source "bgnpfrom"
classes[].fields[].name "categories"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "data"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "numreview"
classes[].fields[].type "integer"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "bgnsellers"
classes[].fields[].type "integer"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "image"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "artist"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "artistspid"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "title"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "newestedition"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "newestedition"
classes[].fields[].name "bgnpto"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "bgnpto"
classes[].fields[].name "year"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "year"
classes[].fields[].name "did"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "did"
classes[].fields[].name "scorekey"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "scorekey"
classes[].fields[].name "cbid"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "cbid"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 1606815285
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "sales"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "sales"
classes[].fields[].name "pto"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "pto"
classes[].fields[].name "mid"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "mid"
classes[].fields[].name "weight"
classes[].fields[].type "float"
+classes[].fields[].command "attribute"
+classes[].fields[].source "weight"
classes[].fields[].name "bgnpfrom"
classes[].fields[].type "float"
+classes[].fields[].command "attribute"
+classes[].fields[].source "bgnpfrom"
classes[].fields[].name "newestedition"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "newestedition"
classes[].fields[].name "year"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "year"
classes[].fields[].name "did"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "did"
classes[].fields[].name "scorekey"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "scorekey"
classes[].fields[].name "cbid"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "cbid"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/position_nosummary/summary.cfg b/config-model/src/test/derived/position_nosummary/summary.cfg
index 2c46031bdad..cda3a7df60f 100644
--- a/config-model/src/test/derived/position_nosummary/summary.cfg
+++ b/config-model/src/test/derived/position_nosummary/summary.cfg
@@ -5,16 +5,28 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 1530141163
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "pos_zcurve"
classes[].fields[].type "int64"
+classes[].fields[].command "attribute"
+classes[].fields[].source "pos_zcurve"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/position_summary/summary.cfg b/config-model/src/test/derived/position_summary/summary.cfg
index 7fda1ca0c05..ca26f898b1d 100644
--- a/config-model/src/test/derived/position_summary/summary.cfg
+++ b/config-model/src/test/derived/position_summary/summary.cfg
@@ -5,18 +5,32 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "pos"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "geopos"
+classes[].fields[].source "pos_zcurve"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 1530141163
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "pos_zcurve"
classes[].fields[].type "int64"
+classes[].fields[].command "attribute"
+classes[].fields[].source "pos_zcurve"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/predicate_attribute/summary.cfg b/config-model/src/test/derived/predicate_attribute/summary.cfg
index d01ddcfcf2d..88a0828f9e1 100644
--- a/config-model/src/test/derived/predicate_attribute/summary.cfg
+++ b/config-model/src/test/derived/predicate_attribute/summary.cfg
@@ -5,16 +5,28 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "some_predicate_field"
classes[].fields[].type "string"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 1274088866
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/rankingexpression/summary.cfg b/config-model/src/test/derived/rankingexpression/summary.cfg
index a6ba84ca7a9..0dc717c8993 100644
--- a/config-model/src/test/derived/rankingexpression/summary.cfg
+++ b/config-model/src/test/derived/rankingexpression/summary.cfg
@@ -5,40 +5,76 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "artist"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "title"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "surl"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "year"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "year"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 1736696699
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "year"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "year"
classes[].fields[].name "foo1"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "foo1"
classes[].fields[].name "foo2"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "foo2"
classes[].fields[].name "foo3"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "foo3"
classes[].fields[].name "foo4"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "foo4"
classes[].fields[].name "bar1"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "bar1"
classes[].fields[].name "bar2"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "bar2"
classes[].fields[].name "bar3"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "bar3"
classes[].fields[].name "bar4"
classes[].fields[].type "integer"
+classes[].fields[].command "attribute"
+classes[].fields[].source "bar4"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/ranktypes/summary.cfg b/config-model/src/test/derived/ranktypes/summary.cfg
index b39f10f354b..5499349184b 100644
--- a/config-model/src/test/derived/ranktypes/summary.cfg
+++ b/config-model/src/test/derived/ranktypes/summary.cfg
@@ -5,11 +5,21 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "title"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "descr"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/reference_fields/summary.cfg b/config-model/src/test/derived/reference_fields/summary.cfg
index 2bcabe81c3c..9e70d42d874 100644
--- a/config-model/src/test/derived/reference_fields/summary.cfg
+++ b/config-model/src/test/derived/reference_fields/summary.cfg
@@ -5,25 +5,43 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "campaign_ref"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 428144659
classes[].name "explicit_summary"
classes[].omitsummaryfeatures false
classes[].fields[].name "yet_another_ref"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 1274088866
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/schemainheritance/summary.cfg b/config-model/src/test/derived/schemainheritance/summary.cfg
index 0d54f8ceaf7..d774250f209 100644
--- a/config-model/src/test/derived/schemainheritance/summary.cfg
+++ b/config-model/src/test/derived/schemainheritance/summary.cfg
@@ -5,46 +5,82 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "parent_field"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "parent_field"
classes[].fields[].name "child_field"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "child_field"
classes[].fields[].name "pf1"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "cf1"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 2134223620
classes[].name "parent_summary"
classes[].omitsummaryfeatures false
classes[].fields[].name "pf1"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 524210908
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "parent_field"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "parent_field"
classes[].fields[].name "child_field"
classes[].fields[].type "longstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "child_field"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].id 1486475170
classes[].name "child_summary"
classes[].omitsummaryfeatures false
classes[].fields[].name "pf1"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "cf1"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/streamingstruct/summary.cfg b/config-model/src/test/derived/streamingstruct/summary.cfg
index 4c44f7f38b2..7ed8cb3a192 100644
--- a/config-model/src/test/derived/streamingstruct/summary.cfg
+++ b/config-model/src/test/derived/streamingstruct/summary.cfg
@@ -5,50 +5,96 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "coupleof"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "anothersummaryfield"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "a"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "m"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "b"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "c"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "c2"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "c3"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "n"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "array1"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "array2"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "array3"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "subject"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "g"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "g"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "snippet"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "snippet"
classes[].fields[].name "snippet2"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 109252281
classes[].name "summ"
classes[].omitsummaryfeatures false
classes[].fields[].name "snippet"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "snippet"
classes[].fields[].name "snippet2"
classes[].fields[].type "longstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/streamingstructdefault/summary.cfg b/config-model/src/test/derived/streamingstructdefault/summary.cfg
index 71b8c1371b3..e06f934554d 100644
--- a/config-model/src/test/derived/streamingstructdefault/summary.cfg
+++ b/config-model/src/test/derived/streamingstructdefault/summary.cfg
@@ -5,13 +5,25 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "sum1"
classes[].fields[].type "longstring"
+classes[].fields[].command "dynamicteaser"
+classes[].fields[].source "sum1"
classes[].fields[].name "f1"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "f2"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/tensor/summary.cfg b/config-model/src/test/derived/tensor/summary.cfg
index a5b38684e52..444ab70d2a7 100644
--- a/config-model/src/test/derived/tensor/summary.cfg
+++ b/config-model/src/test/derived/tensor/summary.cfg
@@ -5,24 +5,44 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "f1"
classes[].fields[].type "tensor"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "f3"
classes[].fields[].type "tensor"
+classes[].fields[].command "attribute"
+classes[].fields[].source "f3"
classes[].fields[].name "f4"
classes[].fields[].type "tensor"
+classes[].fields[].command "attribute"
+classes[].fields[].source "f4"
classes[].fields[].name "f5"
classes[].fields[].type "tensor"
+classes[].fields[].command "attribute"
+classes[].fields[].source "f5"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 219619290
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "f6"
classes[].fields[].type "float"
+classes[].fields[].command "attribute"
+classes[].fields[].source "f6"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/derived/types/summary.cfg b/config-model/src/test/derived/types/summary.cfg
index 33af9d88630..6b2085d0975 100644
--- a/config-model/src/test/derived/types/summary.cfg
+++ b/config-model/src/test/derived/types/summary.cfg
@@ -5,42 +5,80 @@ classes[].name "default"
classes[].omitsummaryfeatures false
classes[].fields[].name "abyte"
classes[].fields[].type "byte"
+classes[].fields[].command "attribute"
+classes[].fields[].source "abyte"
classes[].fields[].name "along"
classes[].fields[].type "int64"
+classes[].fields[].command "attribute"
+classes[].fields[].source "along"
classes[].fields[].name "abool"
classes[].fields[].type "bool"
+classes[].fields[].command "attribute"
+classes[].fields[].source "abool"
classes[].fields[].name "ashortfloat"
classes[].fields[].type "float16"
+classes[].fields[].command "attribute"
+classes[].fields[].source "ashortfloat"
classes[].fields[].name "tagfield"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "tagfield"
classes[].fields[].name "stringmapfield"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "album0"
classes[].fields[].type "jsonstring"
+classes[].fields[].command ""
+classes[].fields[].source ""
classes[].fields[].name "album1"
classes[].fields[].type "jsonstring"
+classes[].fields[].command "attribute"
+classes[].fields[].source "album1"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
+classes[].fields[].command "documentid"
+classes[].fields[].source ""
classes[].id 1027812395
classes[].name "attributeprefetch"
classes[].omitsummaryfeatures false
classes[].fields[].name "other"
classes[].fields[].type "int64"
+classes[].fields[].command "attribute"
+classes[].fields[].source "other"
classes[].fields[].name "abyte"
classes[].fields[].type "byte"
+classes[].fields[].command "attribute"
+classes[].fields[].source "abyte"
classes[].fields[].name "along"
classes[].fields[].type "int64"
+classes[].fields[].command "attribute"
+classes[].fields[].source "along"
classes[].fields[].name "abool"
classes[].fields[].type "bool"
+classes[].fields[].command "attribute"
+classes[].fields[].source "abool"
classes[].fields[].name "ashortfloat"
classes[].fields[].type "float16"
+classes[].fields[].command "attribute"
+classes[].fields[].source "ashortfloat"
classes[].fields[].name "juletre"
classes[].fields[].type "int64"
+classes[].fields[].command "attribute"
+classes[].fields[].source "juletre"
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "rankfeatures"
+classes[].fields[].source ""
classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
+classes[].fields[].command "summaryfeatures"
+classes[].fields[].source ""
diff --git a/config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java b/config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java
index a9a230c94a2..c83fc1ac63b 100644
--- a/config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java
+++ b/config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java
@@ -66,57 +66,19 @@ public class SummaryTestCase extends AbstractSchemaTestCase {
assertEquals(13, summary.fields().size());
- field = fields.next();
- assertEquals("exactemento", field.getName());
- assertEquals(SummaryClassField.Type.LONGSTRING, field.getType());
-
- field = fields.next();
- assertEquals("exact", field.getName());
- assertEquals(SummaryClassField.Type.LONGSTRING, field.getType());
-
- field = fields.next();
- assertEquals("title", field.getName());
- assertEquals(SummaryClassField.Type.LONGSTRING, field.getType());
-
- field = fields.next();
- assertEquals("description", field.getName());
- assertEquals(SummaryClassField.Type.LONGSTRING, field.getType());
-
- field = fields.next();
- assertEquals("dyndesc", field.getName());
- assertEquals(SummaryClassField.Type.LONGSTRING, field.getType());
-
- field = fields.next();
- assertEquals("longdesc", field.getName());
- assertEquals(SummaryClassField.Type.LONGSTRING, field.getType());
-
- field = fields.next();
- assertEquals("longstat", field.getName());
- assertEquals(SummaryClassField.Type.LONGSTRING, field.getType());
-
- field = fields.next();
- assertEquals("dynlong", field.getName());
- assertEquals(SummaryClassField.Type.LONGSTRING, field.getType());
-
- field = fields.next();
- assertEquals("dyndesc2", field.getName());
- assertEquals(SummaryClassField.Type.LONGSTRING, field.getType());
-
- field = fields.next();
- assertEquals("measurement", field.getName());
- assertEquals(SummaryClassField.Type.INTEGER, field.getType());
-
- field = fields.next();
- assertEquals("rankfeatures", field.getName());
- assertEquals(SummaryClassField.Type.FEATUREDATA, field.getType());
-
- field = fields.next();
- assertEquals("summaryfeatures", field.getName());
- assertEquals(SummaryClassField.Type.FEATUREDATA, field.getType());
-
- field = fields.next();
- assertEquals("documentid", field.getName());
- assertEquals(SummaryClassField.Type.LONGSTRING, field.getType());
+ assertSummaryField("exactemento", SummaryClassField.Type.LONGSTRING, fields.next());
+ assertSummaryField("exact", SummaryClassField.Type.LONGSTRING, fields.next());
+ assertSummaryField("title", SummaryClassField.Type.LONGSTRING, fields.next());
+ assertSummaryField("description", SummaryClassField.Type.LONGSTRING, fields.next());
+ assertSummaryField("dyndesc", SummaryClassField.Type.LONGSTRING, "dynamicteaser", "dyndesc", fields.next());
+ assertSummaryField("longdesc", SummaryClassField.Type.LONGSTRING, fields.next());
+ assertSummaryField("longstat", SummaryClassField.Type.LONGSTRING, fields.next());
+ assertSummaryField("dynlong", SummaryClassField.Type.LONGSTRING, "dynamicteaser", "dynlong", fields.next());
+ assertSummaryField("dyndesc2", SummaryClassField.Type.LONGSTRING, "dynamicteaser", "dyndesc2", fields.next());
+ assertSummaryField("measurement", SummaryClassField.Type.INTEGER, "attribute", "measurement", fields.next());
+ assertSummaryField("rankfeatures", SummaryClassField.Type.FEATUREDATA, "rankfeatures", fields.next());
+ assertSummaryField("summaryfeatures", SummaryClassField.Type.FEATUREDATA, "summaryfeatures", fields.next());
+ assertSummaryField("documentid", SummaryClassField.Type.LONGSTRING, "documentid", fields.next());
}
@Test
@@ -132,6 +94,23 @@ public class SummaryTestCase extends AbstractSchemaTestCase {
assertEquals(SummaryClassField.Type.LONGSTRING, myClass.fields().get("other_campaign_ref").getType());
}
+ private void assertSummaryField(String expName, SummaryClassField.Type expType, SummaryClassField field) {
+ assertSummaryField(expName, expType, "", "", field);
+ }
+
+ private void assertSummaryField(String expName, SummaryClassField.Type expType, String expCommand, SummaryClassField field) {
+ assertSummaryField(expName, expType, expCommand, "", field);
+ }
+
+ private void assertSummaryField(String expName, SummaryClassField.Type expType,
+ String expCommand, String expSource, SummaryClassField field) {
+ assertEquals(expName, field.getName());
+ assertEquals(expType, field.getType());
+ assertEquals(expCommand, field.getCommand());
+ assertEquals(expSource, field.getSource());
+
+ }
+
private static Schema buildCampaignAdModel() throws ParseException {
ApplicationBuilder builder = new ApplicationBuilder();
builder.addSchema("search campaign { document campaign {} }");