diff options
author | Geir Storli <geirst@verizonmedia.com> | 2021-07-02 09:05:50 +0000 |
---|---|---|
committer | Geir Storli <geirst@verizonmedia.com> | 2021-07-02 09:11:26 +0000 |
commit | 1bc04aaeb4f491de8a68386f49c2e9bb62c6f7fe (patch) | |
tree | 3a0465dd4c5d0d5dbc4c2444cb884c766fece4ba /config-model | |
parent | 5d1c2cdee288437be412238aa8923249422dff96 (diff) |
Support setting "omit-summary-features" for a document summary in the SD schema.
Diffstat (limited to 'config-model')
4 files changed, 43 insertions, 1 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/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()); + } + } |