aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2021-07-02 17:18:01 +0200
committerGitHub <noreply@github.com>2021-07-02 17:18:01 +0200
commit9a4add09d54a656e333d06aa4e78c7bd3e4e2ece (patch)
tree13800f952573e49779c5259929e05d81418dabd7
parent910fbc28f104b7203ae123801b51b9a7cd03b886 (diff)
parente0d763e03052c4cbd11b270732bcbb1a88ee5222 (diff)
Merge pull request #18523 from vespa-engine/geirst/omit-summary-features
Add support for omitting summary features for a document summary
-rw-r--r--config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java9
-rw-r--r--config-model/src/main/javacc/SDParser.jj2
-rw-r--r--config-model/src/test/derived/advanced/summary.cfg2
-rw-r--r--config-model/src/test/derived/array_of_struct_attribute/summary.cfg1
-rw-r--r--config-model/src/test/derived/attributeprefetch/summary.cfg54
-rw-r--r--config-model/src/test/derived/complex/summary.cfg82
-rw-r--r--config-model/src/test/derived/emptychild/summary.cfg2
-rw-r--r--config-model/src/test/derived/emptydefault/summary.cfg1
-rw-r--r--config-model/src/test/derived/id/summary.cfg1
-rw-r--r--config-model/src/test/derived/imported_position_field/summary.cfg34
-rw-r--r--config-model/src/test/derived/imported_position_field_summary/summary.cfg3
-rw-r--r--config-model/src/test/derived/imported_struct_fields/summary.cfg88
-rw-r--r--config-model/src/test/derived/importedfields/summary.cfg3
-rw-r--r--config-model/src/test/derived/indexswitches/summary.cfg1
-rw-r--r--config-model/src/test/derived/inheritance/summary.cfg2
-rw-r--r--config-model/src/test/derived/integerattributetostringindex/summary.cfg2
-rw-r--r--config-model/src/test/derived/map_attribute/summary.cfg1
-rw-r--r--config-model/src/test/derived/map_of_struct_attribute/summary.cfg1
-rw-r--r--config-model/src/test/derived/mlr/summary.cfg2
-rw-r--r--config-model/src/test/derived/music/summary.cfg2
-rw-r--r--config-model/src/test/derived/newrank/summary.cfg2
-rw-r--r--config-model/src/test/derived/position_nosummary/summary.cfg2
-rw-r--r--config-model/src/test/derived/position_summary/summary.cfg2
-rw-r--r--config-model/src/test/derived/predicate_attribute/summary.cfg2
-rw-r--r--config-model/src/test/derived/rankexpression/summary.cfg2
-rw-r--r--config-model/src/test/derived/ranktypes/summary.cfg1
-rw-r--r--config-model/src/test/derived/reference_fields/summary.cfg3
-rw-r--r--config-model/src/test/derived/streamingstruct/summary.cfg2
-rw-r--r--config-model/src/test/derived/streamingstructdefault/summary.cfg1
-rw-r--r--config-model/src/test/derived/tensor/summary.cfg2
-rw-r--r--config-model/src/test/derived/types/summary.cfg2
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java28
-rw-r--r--configdefinitions/src/vespa/summary.def1
-rw-r--r--searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp2
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp1
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h1
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp3
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultclass.h11
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp22
-rw-r--r--searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp3
41 files changed, 255 insertions, 136 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java
index af2168545dc..c173b2c11d9 100644
--- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java
+++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/SummaryClass.java
@@ -28,6 +28,7 @@ public class SummaryClass extends Derived {
/** True if this summary class needs to access summary information on disk */
private boolean accessingDiskSummary = false;
private final boolean rawAsBase64;
+ private final boolean omitSummaryFeatures;
/** The summary fields of this indexed by name */
private Map<String,SummaryClassField> fields = new java.util.LinkedHashMap<>();
@@ -44,6 +45,7 @@ public class SummaryClass extends Derived {
public SummaryClass(Search search, DocumentSummary summary, DeployLogger deployLogger) {
this.deployLogger = deployLogger;
this.rawAsBase64 = search.isRawAsBase64();
+ this.omitSummaryFeatures = summary.omitSummaryFeatures();
deriveName(summary);
deriveFields(search,summary);
deriveImplicitFields(summary);
@@ -128,7 +130,8 @@ public class SummaryClass extends Derived {
}
classBuilder.
id(id).
- name(getName());
+ name(getName()).
+ omitsummaryfeatures(omitSummaryFeatures);
for (SummaryClassField field : fields.values() ) {
classBuilder.fields(new SummaryConfig.Classes.Fields.Builder().
name(field.getName()).
diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java
index 3c6aa881af4..454d0f08ff0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java
+++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/DocumentSummary.java
@@ -14,6 +14,7 @@ import java.util.List;
public class DocumentSummary extends FieldView {
private boolean fromDisk = false;
+ private boolean omitSummaryFeatures = false;
private DocumentSummary inherited;
/**
@@ -30,6 +31,14 @@ public class DocumentSummary extends FieldView {
/** Returns whether the user has noted explicitly that this summary accesses disk */
public boolean isFromDisk() { return fromDisk; }
+ public void setOmitSummaryFeatures(boolean value) {
+ omitSummaryFeatures = value;
+ }
+
+ public boolean omitSummaryFeatures() {
+ return omitSummaryFeatures;
+ }
+
/**
* The model is constrained to ensure that summary fields of the same name
* in different classes have the same summary transform, because this is
diff --git a/config-model/src/main/javacc/SDParser.jj b/config-model/src/main/javacc/SDParser.jj
index c247100db76..fb24b50aa99 100644
--- a/config-model/src/main/javacc/SDParser.jj
+++ b/config-model/src/main/javacc/SDParser.jj
@@ -291,6 +291,7 @@ TOKEN :
| < TO: "to" >
| < DIRECT: "direct" >
| < FROMDISK: "from-disk" >
+| < OMITSUMMARYFEATURES: "omit-summary-features" >
| < ALWAYS: "always" >
| < ONDEMAND: "on-demand" >
| < NEVER: "never" >
@@ -1767,6 +1768,7 @@ Object documentSummary(Search search) :
lbrace()
(
<FROMDISK> { summary.setFromDisk(true); } |
+ <OMITSUMMARYFEATURES> { summary.setOmitSummaryFeatures(true); } |
documentSummaryItem(summary) |
<NL>
)*
diff --git a/config-model/src/test/derived/advanced/summary.cfg b/config-model/src/test/derived/advanced/summary.cfg
index a56d0e6aa4f..f497461b460 100644
--- a/config-model/src/test/derived/advanced/summary.cfg
+++ b/config-model/src/test/derived/advanced/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1271952241
classes[].id 1271952241
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "debug"
classes[].fields[].type "longstring"
classes[].fields[].name "attributes"
@@ -25,6 +26,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 472092010
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "location_zcurve"
classes[].fields[].type "int64"
classes[].fields[].name "rankfeatures"
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 c1679c57d1a..965c875d5ce 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
@@ -1,6 +1,7 @@
defaultsummaryid 252850086
classes[].id 252850086
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "elem_array"
classes[].fields[].type "jsonstring"
classes[].fields[].name "rankfeatures"
diff --git a/config-model/src/test/derived/attributeprefetch/summary.cfg b/config-model/src/test/derived/attributeprefetch/summary.cfg
index 13b17464946..f0189f9a3c7 100644
--- a/config-model/src/test/derived/attributeprefetch/summary.cfg
+++ b/config-model/src/test/derived/attributeprefetch/summary.cfg
@@ -1,27 +1,29 @@
defaultsummaryid 1151071433
-classes[0].id 1151071433
-classes[0].name "default"
-classes[0].fields[0].name "rankfeatures"
-classes[0].fields[0].type "featuredata"
-classes[0].fields[1].name "summaryfeatures"
-classes[0].fields[1].type "featuredata"
-classes[0].fields[2].name "documentid"
-classes[0].fields[2].type "longstring"
-classes[1].id 1980470965
-classes[1].name "attributeprefetch"
-classes[1].fields[0].name "singlebyte"
-classes[1].fields[0].type "byte"
-classes[1].fields[1].name "singleint"
-classes[1].fields[1].type "integer"
-classes[1].fields[2].name "singlelong"
-classes[1].fields[2].type "int64"
-classes[1].fields[3].name "singlefloat"
-classes[1].fields[3].type "float"
-classes[1].fields[4].name "singledouble"
-classes[1].fields[4].type "double"
-classes[1].fields[5].name "singlestring"
-classes[1].fields[5].type "longstring"
-classes[1].fields[6].name "rankfeatures"
-classes[1].fields[6].type "featuredata"
-classes[1].fields[7].name "summaryfeatures"
-classes[1].fields[7].type "featuredata" \ No newline at end of file
+classes[].id 1151071433
+classes[].name "default"
+classes[].omitsummaryfeatures false
+classes[].fields[].name "rankfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "summaryfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "documentid"
+classes[].fields[].type "longstring"
+classes[].id 1980470965
+classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
+classes[].fields[].name "singlebyte"
+classes[].fields[].type "byte"
+classes[].fields[].name "singleint"
+classes[].fields[].type "integer"
+classes[].fields[].name "singlelong"
+classes[].fields[].type "int64"
+classes[].fields[].name "singlefloat"
+classes[].fields[].type "float"
+classes[].fields[].name "singledouble"
+classes[].fields[].type "double"
+classes[].fields[].name "singlestring"
+classes[].fields[].type "longstring"
+classes[].fields[].name "rankfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "summaryfeatures"
+classes[].fields[].type "featuredata"
diff --git a/config-model/src/test/derived/complex/summary.cfg b/config-model/src/test/derived/complex/summary.cfg
index 5bb472b5f41..2dac4736d23 100644
--- a/config-model/src/test/derived/complex/summary.cfg
+++ b/config-model/src/test/derived/complex/summary.cfg
@@ -1,41 +1,43 @@
defaultsummaryid 1506848752
-classes[0].id 1506848752
-classes[0].name "default"
-classes[0].fields[0].name "woe"
-classes[0].fields[0].type "longstring"
-classes[0].fields[1].name "exact"
-classes[0].fields[1].type "longstring"
-classes[0].fields[2].name "title"
-classes[0].fields[2].type "longstring"
-classes[0].fields[3].name "dyntitle"
-classes[0].fields[3].type "longstring"
-classes[0].fields[4].name "source"
-classes[0].fields[4].type "longstring"
-classes[0].fields[5].name "stringfield"
-classes[0].fields[5].type "longstring"
-classes[0].fields[6].name "rankfeatures"
-classes[0].fields[6].type "featuredata"
-classes[0].fields[7].name "summaryfeatures"
-classes[0].fields[7].type "featuredata"
-classes[0].fields[8].name "documentid"
-classes[0].fields[8].type "longstring"
-classes[1].id 128090024
-classes[1].name "attributeprefetch"
-classes[1].fields[0].name "year_sub"
-classes[1].fields[0].type "integer"
-classes[1].fields[1].name "prefixenabled"
-classes[1].fields[1].type "longstring"
-classes[1].fields[2].name "fleeting2"
-classes[1].fields[2].type "float"
-classes[1].fields[3].name "foundat"
-classes[1].fields[3].type "int64"
-classes[1].fields[4].name "collapseby"
-classes[1].fields[4].type "integer"
-classes[1].fields[5].name "ts"
-classes[1].fields[5].type "int64"
-classes[1].fields[6].name "combineda"
-classes[1].fields[6].type "integer"
-classes[1].fields[7].name "rankfeatures"
-classes[1].fields[7].type "featuredata"
-classes[1].fields[8].name "summaryfeatures"
-classes[1].fields[8].type "featuredata" \ No newline at end of file
+classes[].id 1506848752
+classes[].name "default"
+classes[].omitsummaryfeatures false
+classes[].fields[].name "woe"
+classes[].fields[].type "longstring"
+classes[].fields[].name "exact"
+classes[].fields[].type "longstring"
+classes[].fields[].name "title"
+classes[].fields[].type "longstring"
+classes[].fields[].name "dyntitle"
+classes[].fields[].type "longstring"
+classes[].fields[].name "source"
+classes[].fields[].type "longstring"
+classes[].fields[].name "stringfield"
+classes[].fields[].type "longstring"
+classes[].fields[].name "rankfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "summaryfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "documentid"
+classes[].fields[].type "longstring"
+classes[].id 128090024
+classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
+classes[].fields[].name "year_sub"
+classes[].fields[].type "integer"
+classes[].fields[].name "prefixenabled"
+classes[].fields[].type "longstring"
+classes[].fields[].name "fleeting2"
+classes[].fields[].type "float"
+classes[].fields[].name "foundat"
+classes[].fields[].type "int64"
+classes[].fields[].name "collapseby"
+classes[].fields[].type "integer"
+classes[].fields[].name "ts"
+classes[].fields[].type "int64"
+classes[].fields[].name "combineda"
+classes[].fields[].type "integer"
+classes[].fields[].name "rankfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "summaryfeatures"
+classes[].fields[].type "featuredata"
diff --git a/config-model/src/test/derived/emptychild/summary.cfg b/config-model/src/test/derived/emptychild/summary.cfg
index ed3a61a5de5..82bed7fd55e 100644
--- a/config-model/src/test/derived/emptychild/summary.cfg
+++ b/config-model/src/test/derived/emptychild/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1814603381
classes[].id 1814603381
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "a1"
classes[].fields[].type "longstring"
classes[].fields[].name "rankfeatures"
@@ -11,6 +12,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 1490368133
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "a1"
classes[].fields[].type "longstring"
classes[].fields[].name "rankfeatures"
diff --git a/config-model/src/test/derived/emptydefault/summary.cfg b/config-model/src/test/derived/emptydefault/summary.cfg
index e47f24b21c3..61294d97b4c 100644
--- a/config-model/src/test/derived/emptydefault/summary.cfg
+++ b/config-model/src/test/derived/emptydefault/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1151071433
classes[].id 1151071433
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
classes[].fields[].name "summaryfeatures"
diff --git a/config-model/src/test/derived/id/summary.cfg b/config-model/src/test/derived/id/summary.cfg
index dbc9a90ebce..b50b970afe2 100644
--- a/config-model/src/test/derived/id/summary.cfg
+++ b/config-model/src/test/derived/id/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1814716401
classes[].id 1814716401
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "uri"
classes[].fields[].type "longstring"
classes[].fields[].name "rankfeatures"
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 8da2598a5fc..3ab8e7e29e5 100644
--- a/config-model/src/test/derived/imported_position_field/summary.cfg
+++ b/config-model/src/test/derived/imported_position_field/summary.cfg
@@ -1,17 +1,19 @@
defaultsummaryid 1570252291
-classes[0].id 1570252291
-classes[0].name "default"
-classes[0].fields[0].name "parent_ref"
-classes[0].fields[0].type "longstring"
-classes[0].fields[1].name "rankfeatures"
-classes[0].fields[1].type "featuredata"
-classes[0].fields[2].name "summaryfeatures"
-classes[0].fields[2].type "featuredata"
-classes[0].fields[3].name "documentid"
-classes[0].fields[3].type "longstring"
-classes[1].id 1274088866
-classes[1].name "attributeprefetch"
-classes[1].fields[0].name "rankfeatures"
-classes[1].fields[0].type "featuredata"
-classes[1].fields[1].name "summaryfeatures"
-classes[1].fields[1].type "featuredata" \ No newline at end of file
+classes[].id 1570252291
+classes[].name "default"
+classes[].omitsummaryfeatures false
+classes[].fields[].name "parent_ref"
+classes[].fields[].type "longstring"
+classes[].fields[].name "rankfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "summaryfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "documentid"
+classes[].fields[].type "longstring"
+classes[].id 1274088866
+classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
+classes[].fields[].name "rankfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "summaryfeatures"
+classes[].fields[].type "featuredata"
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 b607786ca36..76faac23170 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
@@ -1,6 +1,7 @@
defaultsummaryid 1194448774
classes[].id 1194448774
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "parent_ref"
classes[].fields[].type "longstring"
classes[].fields[].name "rankfeatures"
@@ -17,6 +18,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 890647799
classes[].name "mysummary"
+classes[].omitsummaryfeatures false
classes[].fields[].name "my_pos"
classes[].fields[].type "jsonstring"
classes[].fields[].name "rankfeatures"
@@ -29,6 +31,7 @@ classes[].fields[].name "my_pos.distance"
classes[].fields[].type "integer"
classes[].id 1274088866
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
classes[].fields[].name "summaryfeatures"
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 3a9bf4f5e0a..ab6c6853925 100644
--- a/config-model/src/test/derived/imported_struct_fields/summary.cfg
+++ b/config-model/src/test/derived/imported_struct_fields/summary.cfg
@@ -1,43 +1,47 @@
defaultsummaryid 1570252291
-classes[0].id 1570252291
-classes[0].name "default"
-classes[0].fields[0].name "parent_ref"
-classes[0].fields[0].type "longstring"
-classes[0].fields[1].name "rankfeatures"
-classes[0].fields[1].type "featuredata"
-classes[0].fields[2].name "summaryfeatures"
-classes[0].fields[2].type "featuredata"
-classes[0].fields[3].name "documentid"
-classes[0].fields[3].type "longstring"
-classes[1].id 2126652894
-classes[1].name "mysummary"
-classes[1].fields[0].name "documentid"
-classes[1].fields[0].type "longstring"
-classes[1].fields[1].name "my_elem_array"
-classes[1].fields[1].type "jsonstring"
-classes[1].fields[2].name "my_elem_map"
-classes[1].fields[2].type "jsonstring"
-classes[1].fields[3].name "my_str_int_map"
-classes[1].fields[3].type "jsonstring"
-classes[1].fields[4].name "rankfeatures"
-classes[1].fields[4].type "featuredata"
-classes[1].fields[5].name "summaryfeatures"
-classes[1].fields[5].type "featuredata"
-classes[2].id 1629947863
-classes[2].name "filtered"
-classes[2].fields[0].name "elem_array_filtered"
-classes[2].fields[0].type "jsonstring"
-classes[2].fields[1].name "elem_map_filtered"
-classes[2].fields[1].type "jsonstring"
-classes[2].fields[2].name "str_int_map_filtered"
-classes[2].fields[2].type "jsonstring"
-classes[2].fields[3].name "rankfeatures"
-classes[2].fields[3].type "featuredata"
-classes[2].fields[4].name "summaryfeatures"
-classes[2].fields[4].type "featuredata"
-classes[3].id 1274088866
-classes[3].name "attributeprefetch"
-classes[3].fields[0].name "rankfeatures"
-classes[3].fields[0].type "featuredata"
-classes[3].fields[1].name "summaryfeatures"
-classes[3].fields[1].type "featuredata" \ No newline at end of file
+classes[].id 1570252291
+classes[].name "default"
+classes[].omitsummaryfeatures false
+classes[].fields[].name "parent_ref"
+classes[].fields[].type "longstring"
+classes[].fields[].name "rankfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "summaryfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "documentid"
+classes[].fields[].type "longstring"
+classes[].id 2126652894
+classes[].name "mysummary"
+classes[].omitsummaryfeatures false
+classes[].fields[].name "documentid"
+classes[].fields[].type "longstring"
+classes[].fields[].name "my_elem_array"
+classes[].fields[].type "jsonstring"
+classes[].fields[].name "my_elem_map"
+classes[].fields[].type "jsonstring"
+classes[].fields[].name "my_str_int_map"
+classes[].fields[].type "jsonstring"
+classes[].fields[].name "rankfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "summaryfeatures"
+classes[].fields[].type "featuredata"
+classes[].id 1629947863
+classes[].name "filtered"
+classes[].omitsummaryfeatures false
+classes[].fields[].name "elem_array_filtered"
+classes[].fields[].type "jsonstring"
+classes[].fields[].name "elem_map_filtered"
+classes[].fields[].type "jsonstring"
+classes[].fields[].name "str_int_map_filtered"
+classes[].fields[].type "jsonstring"
+classes[].fields[].name "rankfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "summaryfeatures"
+classes[].fields[].type "featuredata"
+classes[].id 1274088866
+classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
+classes[].fields[].name "rankfeatures"
+classes[].fields[].type "featuredata"
+classes[].fields[].name "summaryfeatures"
+classes[].fields[].type "featuredata"
diff --git a/config-model/src/test/derived/importedfields/summary.cfg b/config-model/src/test/derived/importedfields/summary.cfg
index f95949cfa62..74b5b44214e 100644
--- a/config-model/src/test/derived/importedfields/summary.cfg
+++ b/config-model/src/test/derived/importedfields/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1294344677
classes[].id 1294344677
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "b_ref_with_summary"
classes[].fields[].type "longstring"
classes[].fields[].name "rankfeatures"
@@ -11,6 +12,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 159551552
classes[].name "mysummary"
+classes[].omitsummaryfeatures false
classes[].fields[].name "a_ref"
classes[].fields[].type "longstring"
classes[].fields[].name "b_ref_with_summary"
@@ -33,6 +35,7 @@ classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
classes[].id 1274088866
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
classes[].fields[].name "summaryfeatures"
diff --git a/config-model/src/test/derived/indexswitches/summary.cfg b/config-model/src/test/derived/indexswitches/summary.cfg
index 5bdc8fcdef4..d04bc4eb167 100644
--- a/config-model/src/test/derived/indexswitches/summary.cfg
+++ b/config-model/src/test/derived/indexswitches/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1698765342
classes[].id 1698765342
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "source"
classes[].fields[].type "longstring"
classes[].fields[].name "title"
diff --git a/config-model/src/test/derived/inheritance/summary.cfg b/config-model/src/test/derived/inheritance/summary.cfg
index dde71a1378c..dde9f95ecbe 100644
--- a/config-model/src/test/derived/inheritance/summary.cfg
+++ b/config-model/src/test/derived/inheritance/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1797992819
classes[].id 1797992819
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "onlyfather"
classes[].fields[].type "longstring"
classes[].fields[].name "rankfeatures"
@@ -11,6 +12,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 1608562186
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "onlygrandparent"
classes[].fields[].type "integer"
classes[].fields[].name "overridden"
diff --git a/config-model/src/test/derived/integerattributetostringindex/summary.cfg b/config-model/src/test/derived/integerattributetostringindex/summary.cfg
index 267585e3fda..d5eb316ff01 100644
--- a/config-model/src/test/derived/integerattributetostringindex/summary.cfg
+++ b/config-model/src/test/derived/integerattributetostringindex/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1195656216
classes[].id 1195656216
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "attinx"
classes[].fields[].type "integer"
classes[].fields[].name "artist"
@@ -17,6 +18,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 1706878063
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "attinx"
classes[].fields[].type "integer"
classes[].fields[].name "artist"
diff --git a/config-model/src/test/derived/map_attribute/summary.cfg b/config-model/src/test/derived/map_attribute/summary.cfg
index 24d6cab7697..b465bdfa541 100644
--- a/config-model/src/test/derived/map_attribute/summary.cfg
+++ b/config-model/src/test/derived/map_attribute/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1376056200
classes[].id 1376056200
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "str_map"
classes[].fields[].type "jsonstring"
classes[].fields[].name "int_map"
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 f70025c8f02..67988dbf30e 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
@@ -1,6 +1,7 @@
defaultsummaryid 1131098132
classes[].id 1131098132
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "str_elem_map"
classes[].fields[].type "jsonstring"
classes[].fields[].name "int_elem_map"
diff --git a/config-model/src/test/derived/mlr/summary.cfg b/config-model/src/test/derived/mlr/summary.cfg
index cb5bf17df84..b6a53a9a1d9 100644
--- a/config-model/src/test/derived/mlr/summary.cfg
+++ b/config-model/src/test/derived/mlr/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1868876861
classes[].id 1868876861
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "a"
classes[].fields[].type "longstring"
classes[].fields[].name "b"
@@ -13,6 +14,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 1944325986
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "a"
classes[].fields[].type "longstring"
classes[].fields[].name "ranklog"
diff --git a/config-model/src/test/derived/music/summary.cfg b/config-model/src/test/derived/music/summary.cfg
index 3eca077dbc8..bc55727b407 100644
--- a/config-model/src/test/derived/music/summary.cfg
+++ b/config-model/src/test/derived/music/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 2086497905
classes[].id 2086497905
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "bgndata"
classes[].fields[].type "longstring"
classes[].fields[].name "sales"
@@ -79,6 +80,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 2060710706
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "sales"
classes[].fields[].type "integer"
classes[].fields[].name "pto"
diff --git a/config-model/src/test/derived/newrank/summary.cfg b/config-model/src/test/derived/newrank/summary.cfg
index 7cd92c26e02..0b98b20c342 100644
--- a/config-model/src/test/derived/newrank/summary.cfg
+++ b/config-model/src/test/derived/newrank/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 912980235
classes[].id 912980235
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "bgndata"
classes[].fields[].type "longstring"
classes[].fields[].name "sales"
@@ -71,6 +72,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 1606815285
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "sales"
classes[].fields[].type "integer"
classes[].fields[].name "pto"
diff --git a/config-model/src/test/derived/position_nosummary/summary.cfg b/config-model/src/test/derived/position_nosummary/summary.cfg
index fad012393ef..4222e88cc2f 100644
--- a/config-model/src/test/derived/position_nosummary/summary.cfg
+++ b/config-model/src/test/derived/position_nosummary/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1727020212
classes[].id 1727020212
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "pos.position"
classes[].fields[].type "xmlstring"
classes[].fields[].name "pos.distance"
@@ -13,6 +14,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 1530141163
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "pos_zcurve"
classes[].fields[].type "int64"
classes[].fields[].name "rankfeatures"
diff --git a/config-model/src/test/derived/position_summary/summary.cfg b/config-model/src/test/derived/position_summary/summary.cfg
index af801f43cc0..f54066d865e 100644
--- a/config-model/src/test/derived/position_summary/summary.cfg
+++ b/config-model/src/test/derived/position_summary/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 230670304
classes[].id 230670304
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "pos"
classes[].fields[].type "jsonstring"
classes[].fields[].name "pos.position"
@@ -15,6 +16,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 1530141163
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "pos_zcurve"
classes[].fields[].type "int64"
classes[].fields[].name "rankfeatures"
diff --git a/config-model/src/test/derived/predicate_attribute/summary.cfg b/config-model/src/test/derived/predicate_attribute/summary.cfg
index 6e33bd4e567..9cc613107e0 100644
--- a/config-model/src/test/derived/predicate_attribute/summary.cfg
+++ b/config-model/src/test/derived/predicate_attribute/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1391971216
classes[].id 1391971216
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "some_predicate_field"
classes[].fields[].type "string"
classes[].fields[].name "rankfeatures"
@@ -11,6 +12,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 1274088866
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
classes[].fields[].name "summaryfeatures"
diff --git a/config-model/src/test/derived/rankexpression/summary.cfg b/config-model/src/test/derived/rankexpression/summary.cfg
index f8b56baf8f2..4f417a848a7 100644
--- a/config-model/src/test/derived/rankexpression/summary.cfg
+++ b/config-model/src/test/derived/rankexpression/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1753207254
classes[].id 1753207254
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "artist"
classes[].fields[].type "longstring"
classes[].fields[].name "title"
@@ -17,6 +18,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 1736696699
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "year"
classes[].fields[].type "integer"
classes[].fields[].name "foo1"
diff --git a/config-model/src/test/derived/ranktypes/summary.cfg b/config-model/src/test/derived/ranktypes/summary.cfg
index 9644eb878ea..49b668e9edf 100644
--- a/config-model/src/test/derived/ranktypes/summary.cfg
+++ b/config-model/src/test/derived/ranktypes/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1567556360
classes[].id 1567556360
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "title"
classes[].fields[].type "longstring"
classes[].fields[].name "descr"
diff --git a/config-model/src/test/derived/reference_fields/summary.cfg b/config-model/src/test/derived/reference_fields/summary.cfg
index 49037473d88..410bccff7b3 100644
--- a/config-model/src/test/derived/reference_fields/summary.cfg
+++ b/config-model/src/test/derived/reference_fields/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1987541865
classes[].id 1987541865
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "campaign_ref"
classes[].fields[].type "longstring"
classes[].fields[].name "rankfeatures"
@@ -11,6 +12,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 428144659
classes[].name "explicit_summary"
+classes[].omitsummaryfeatures false
classes[].fields[].name "yet_another_ref"
classes[].fields[].type "longstring"
classes[].fields[].name "rankfeatures"
@@ -19,6 +21,7 @@ classes[].fields[].name "summaryfeatures"
classes[].fields[].type "featuredata"
classes[].id 1274088866
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "rankfeatures"
classes[].fields[].type "featuredata"
classes[].fields[].name "summaryfeatures"
diff --git a/config-model/src/test/derived/streamingstruct/summary.cfg b/config-model/src/test/derived/streamingstruct/summary.cfg
index 28f19e6fe25..655499a88be 100644
--- a/config-model/src/test/derived/streamingstruct/summary.cfg
+++ b/config-model/src/test/derived/streamingstruct/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 569269436
classes[].id 569269436
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "coupleof"
classes[].fields[].type "longstring"
classes[].fields[].name "anothersummaryfield"
@@ -41,6 +42,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 109252281
classes[].name "summ"
+classes[].omitsummaryfeatures false
classes[].fields[].name "snippet"
classes[].fields[].type "longstring"
classes[].fields[].name "snippet2"
diff --git a/config-model/src/test/derived/streamingstructdefault/summary.cfg b/config-model/src/test/derived/streamingstructdefault/summary.cfg
index caa44931c6a..a52b34925dc 100644
--- a/config-model/src/test/derived/streamingstructdefault/summary.cfg
+++ b/config-model/src/test/derived/streamingstructdefault/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 718801936
classes[].id 718801936
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "sum1"
classes[].fields[].type "longstring"
classes[].fields[].name "f1"
diff --git a/config-model/src/test/derived/tensor/summary.cfg b/config-model/src/test/derived/tensor/summary.cfg
index fb32eacbb4c..355cba0e561 100644
--- a/config-model/src/test/derived/tensor/summary.cfg
+++ b/config-model/src/test/derived/tensor/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 898020074
classes[].id 898020074
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "f1"
classes[].fields[].type "tensor"
classes[].fields[].name "f3"
@@ -17,6 +18,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 1476352352
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "f2"
classes[].fields[].type "tensor"
classes[].fields[].name "f3"
diff --git a/config-model/src/test/derived/types/summary.cfg b/config-model/src/test/derived/types/summary.cfg
index e5485a24c8c..e0e67a5669d 100644
--- a/config-model/src/test/derived/types/summary.cfg
+++ b/config-model/src/test/derived/types/summary.cfg
@@ -1,6 +1,7 @@
defaultsummaryid 1131946680
classes[].id 1131946680
classes[].name "default"
+classes[].omitsummaryfeatures false
classes[].fields[].name "abyte"
classes[].fields[].type "byte"
classes[].fields[].name "along"
@@ -25,6 +26,7 @@ classes[].fields[].name "documentid"
classes[].fields[].type "longstring"
classes[].id 1027812395
classes[].name "attributeprefetch"
+classes[].omitsummaryfeatures false
classes[].fields[].name "other"
classes[].fields[].type "int64"
classes[].fields[].name "abyte"
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java
index bfc738a4f87..ef7da4f23d0 100644
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java
+++ b/config-model/src/test/java/com/yahoo/searchdefinition/derived/SummaryTestCase.java
@@ -6,6 +6,7 @@ import com.yahoo.searchdefinition.Search;
import com.yahoo.searchdefinition.SearchBuilder;
import com.yahoo.searchdefinition.SchemaTestCase;
import com.yahoo.searchdefinition.parser.ParseException;
+import com.yahoo.vespa.config.search.SummaryConfig;
import org.junit.Test;
import java.io.IOException;
@@ -14,6 +15,7 @@ import java.util.Iterator;
import static com.yahoo.config.model.test.TestUtil.joinLines;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
/**
* Tests summary extraction
@@ -151,4 +153,30 @@ public class SummaryTestCase extends SchemaTestCase {
return builder.getSearch("ad");
}
+ @Test
+ public void omit_summary_features_specified_for_document_summary() throws ParseException {
+ String sd = joinLines(
+ "schema test {",
+ " document test {",
+ " field foo type string { indexing: summary }",
+ " }",
+ " document-summary bar {",
+ " summary foo type string {}",
+ " omit-summary-features",
+ " }",
+ " document-summary baz {",
+ " summary foo type string {}",
+ " }",
+ "}");
+ var search = SearchBuilder.createFromString(sd).getSearch();
+ assertOmitSummaryFeatures(true, search, "bar");
+ assertOmitSummaryFeatures(false, search, "baz");
+ }
+
+ private void assertOmitSummaryFeatures(boolean expected, Search search, String summaryName) {
+ var summary = new SummaryClass(search, search.getSummary(summaryName), new BaseDeployLogger());
+ var config = new SummaryConfig.Classes(summary.getSummaryClassConfig());
+ assertEquals(expected, config.omitsummaryfeatures());
+ }
+
}
diff --git a/configdefinitions/src/vespa/summary.def b/configdefinitions/src/vespa/summary.def
index 20ca6b10450..26b0e4a4a37 100644
--- a/configdefinitions/src/vespa/summary.def
+++ b/configdefinitions/src/vespa/summary.def
@@ -4,5 +4,6 @@ namespace=vespa.config.search
defaultsummaryid int default=-1
classes[].id int
classes[].name string
+classes[].omitsummaryfeatures bool default=false
classes[].fields[].name string
classes[].fields[].type string
diff --git a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
index c0b5bcab791..b8d1d2f17e6 100644
--- a/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
+++ b/searchcore/src/vespa/searchcore/proton/docsummary/docsumcontext.cpp
@@ -71,6 +71,7 @@ DocsumContext::createReply()
reply->docsums.resize(_docsumState._docsumcnt);
SymbolTable::UP symbols = std::make_unique<SymbolTable>();
IDocsumWriter::ResolveClassInfo rci = _docsumWriter.resolveClassInfo(_docsumState._args.getResultClassName(), _docsumStore.getSummaryClassId());
+ _docsumState._omit_summary_features = rci.outputClass->omit_summary_features();
for (uint32_t i = 0; i < _docsumState._docsumcnt; ++i) {
buf.reset();
uint32_t docId = _docsumState._docsumbuf[i];
@@ -114,6 +115,7 @@ DocsumContext::createSlimeReply()
const Symbol docsumSym = response->insert(DOCSUM);
IDocsumWriter::ResolveClassInfo rci = _docsumWriter.resolveClassInfo(_docsumState._args.getResultClassName(),
_docsumStore.getSummaryClassId());
+ _docsumState._omit_summary_features = rci.outputClass->omit_summary_features();
uint32_t i(0);
for (i = 0; (i < _docsumState._docsumcnt) && !_request.expired(); ++i) {
uint32_t docId = _docsumState._docsumbuf[i];
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp
index 99a372d9676..6f042ee3907 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.cpp
@@ -36,6 +36,7 @@ GetDocsumsState::GetDocsumsState(GetDocsumsStateCallback &callback)
_parsedLocations(),
_summaryFeatures(nullptr),
_summaryFeaturesCached(false),
+ _omit_summary_features(false),
_rankFeatures(nullptr),
_matching_elements(),
_jsonStringer()
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h
index db0f8e6e8ad..88a95d0446c 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/docsumstate.h
@@ -84,6 +84,7 @@ public:
// used by SummaryFeaturesDFW
FeatureSet::SP _summaryFeatures;
bool _summaryFeaturesCached;
+ bool _omit_summary_features;
// used by RankFeaturesDFW
FeatureSet::SP _rankFeatures;
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp
index 8066a5e65db..f52cc62af92 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.cpp
@@ -15,7 +15,8 @@ ResultClass::ResultClass(const char *name, uint32_t id, util::StringEnum & field
_nameMap(),
_fieldEnum(fieldEnum),
_enumMap(),
- _dynInfo(NULL)
+ _dynInfo(NULL),
+ _omit_summary_features(false)
{ }
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h
index 52e331cd365..88c3552387b 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultclass.h
@@ -141,6 +141,9 @@ private:
util::StringEnum &_fieldEnum; // fieldname -> f.n. enum value [SHARED]
std::vector<int> _enumMap; // fieldname enum value -> entry index
DynamicInfo *_dynInfo; // fields overridden and generated
+ // Whether or not summary features should be omitted when filling this summary class.
+ // As default, summary features are always included.
+ bool _omit_summary_features;
public:
typedef std::unique_ptr<ResultClass> UP;
@@ -278,6 +281,14 @@ public:
{
return (offset < _entries.size()) ? &_entries[offset] : NULL;
}
+
+ void set_omit_summary_features(bool value) {
+ _omit_summary_features = value;
+ }
+
+ bool omit_summary_features() const {
+ return _omit_summary_features;
+ }
};
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp
index ead3a4a2f9d..579779efb73 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/resultconfig.cpp
@@ -127,25 +127,27 @@ ResultConfig::ReadConfig(const vespa::config::search::SummaryConfig &cfg, const
int maxclassID = 0x7fffffff; // avoid negative classids
_defaultSummaryId = cfg.defaultsummaryid;
for (uint32_t i = 0; rc && i < cfg.classes.size(); i++) {
- if (cfg.classes[i].name.empty()) {
+ const auto& cfg_class = cfg.classes[i];
+ if (cfg_class.name.empty()) {
LOG(warning, "%s classes[%d]: empty name", configId, i);
}
- int classID = cfg.classes[i].id;
+ int classID = cfg_class.id;
if (classID < 0 || classID > maxclassID) {
LOG(error, "%s classes[%d]: bad id %d", configId, i, classID);
rc = false;
break;
}
- ResultClass *resClass = AddResultClass(cfg.classes[i].name.c_str(), classID);
+ ResultClass *resClass = AddResultClass(cfg_class.name.c_str(), classID);
if (resClass == nullptr) {
- LOG(error,"%s: unable to add classes[%d] name %s", configId, i, cfg.classes[i].name.c_str());
+ LOG(error,"%s: unable to add classes[%d] name %s", configId, i, cfg_class.name.c_str());
rc = false;
break;
}
- for (unsigned int j = 0; rc && (j < cfg.classes[i].fields.size()); j++) {
- const char *fieldtype = cfg.classes[i].fields[j].type.c_str();
- const char *fieldname = cfg.classes[i].fields[j].name.c_str();
- LOG(debug, "Reconfiguring class '%s' field '%s' of type '%s'", cfg.classes[i].name.c_str(), fieldname, fieldtype);
+ resClass->set_omit_summary_features(cfg_class.omitsummaryfeatures);
+ for (unsigned int j = 0; rc && (j < cfg_class.fields.size()); j++) {
+ const char *fieldtype = cfg_class.fields[j].type.c_str();
+ const char *fieldname = cfg_class.fields[j].name.c_str();
+ LOG(debug, "Reconfiguring class '%s' field '%s' of type '%s'", cfg_class.name.c_str(), fieldname, fieldtype);
if (strcmp(fieldtype, "integer") == 0) {
rc = resClass->AddConfigEntry(fieldname, RES_INT);
} else if (strcmp(fieldtype, "short") == 0) {
@@ -179,12 +181,12 @@ ResultConfig::ReadConfig(const vespa::config::search::SummaryConfig &cfg, const
} else if (strcmp(fieldtype, "featuredata") == 0) {
rc = resClass->AddConfigEntry(fieldname, RES_FEATUREDATA);
} else {
- LOG(error, "%s %s.fields[%d]: unknown type '%s'", configId, cfg.classes[i].name.c_str(), j, fieldtype);
+ LOG(error, "%s %s.fields[%d]: unknown type '%s'", configId, cfg_class.name.c_str(), j, fieldtype);
rc = false;
break;
}
if (!rc) {
- LOG(error, "%s %s.fields[%d]: duplicate name '%s'", configId, cfg.classes[i].name.c_str(), j, fieldname);
+ LOG(error, "%s %s.fields[%d]: duplicate name '%s'", configId, cfg_class.name.c_str(), j, fieldname);
break;
}
}
diff --git a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp
index 425faff6a67..4d81f4505a7 100644
--- a/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp
+++ b/searchsummary/src/vespa/searchsummary/docsummary/summaryfeaturesdfw.cpp
@@ -30,6 +30,9 @@ static vespalib::Memory _M_cached("vespa.summaryFeatures.cached");
void
SummaryFeaturesDFW::insertField(uint32_t docid, GetDocsumsState *state, ResType type, vespalib::slime::Inserter &target)
{
+ if (state->_omit_summary_features) {
+ return;
+ }
if ( ! state->_summaryFeatures) {
state->_callback.FillSummaryFeatures(state, _env);
if ( !state->_summaryFeatures) { // still no summary features to write