summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2023-01-26 18:36:58 +0100
committerTor Egge <Tor.Egge@online.no>2023-01-27 10:25:47 +0100
commitd62231991a4abf4f332a04d6928ffe2da9181785 (patch)
tree122eda0c9f164da38470b9dba8ddb3c66b169b9b
parenta31e9abd429b252e9bf67c4e31e2f2cb43c7f9e4 (diff)
Use original source for dynamic summary transform.
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/SummaryClass.java6
-rw-r--r--config-model/src/main/java/com/yahoo/schema/processing/DynamicSummaryTransformUtils.java18
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java3
-rw-r--r--config-model/src/test/derived/bolding_dynamic_summary/summary.cfg8
-rw-r--r--config-model/src/test/derived/multiplesummaries/summary.cfg14
-rw-r--r--config-model/src/test/java/com/yahoo/schema/derived/SummaryTestCase.java6
6 files changed, 35 insertions, 20 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 ec941eacce1..ca5931fd9e8 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
@@ -70,7 +70,7 @@ public class SummaryClass extends Derived {
accessingDiskSummary = true;
}
addField(summaryField.getName(), summaryField.getDataType(), summaryField.getTransform(),
- getSource(summaryField), fields);
+ getSource(summaryField, schema), fields);
}
}
@@ -143,7 +143,7 @@ public class SummaryClass extends Derived {
}
}
- static String getSource(SummaryField summaryField) {
+ static String getSource(SummaryField summaryField, Schema schema) {
if (summaryField.getTransform() == SummaryTransform.NONE) {
return "";
}
@@ -159,7 +159,7 @@ public class SummaryClass extends Derived {
{
return summaryField.getSingleSource();
} else if (summaryField.getTransform().isDynamic()) {
- return DynamicSummaryTransformUtils.getSource(summaryField);
+ return DynamicSummaryTransformUtils.getSource(summaryField, schema);
} else {
return "";
}
diff --git a/config-model/src/main/java/com/yahoo/schema/processing/DynamicSummaryTransformUtils.java b/config-model/src/main/java/com/yahoo/schema/processing/DynamicSummaryTransformUtils.java
index 20597eca64f..30866172f39 100644
--- a/config-model/src/main/java/com/yahoo/schema/processing/DynamicSummaryTransformUtils.java
+++ b/config-model/src/main/java/com/yahoo/schema/processing/DynamicSummaryTransformUtils.java
@@ -1,6 +1,8 @@
package com.yahoo.schema.processing;
import com.yahoo.document.DataType;
+import com.yahoo.schema.Schema;
+import com.yahoo.schema.document.ImmutableSDField;
import com.yahoo.vespa.documentmodel.SummaryField;
/**
@@ -50,10 +52,20 @@ public class DynamicSummaryTransformUtils {
return summaryFieldIsPopulatedBySourceField(summaryField.getDataType());
}
- public static String getSource(SummaryField summaryField) {
+ public static String getSource(SummaryField summaryField, Schema schema) {
// Summary fields with the original supported type is always present in the document type,
// and we must use that field as source at run-time.
- return isOriginalSupportedType(summaryField.getDataType()) ?
- summaryField.getName() : summaryField.getSingleSource();
+ if (isOriginalSupportedType(summaryField.getDataType())) {
+ if (summaryField.hasExplicitSingleSource()) {
+ String sourceFieldName = summaryField.getSingleSource();
+ ImmutableSDField source = schema.getField(sourceFieldName);
+ if (source != null) {
+ return sourceFieldName;
+ }
+ }
+ return summaryField.getName();
+ } else {
+ return summaryField.getSingleSource();
+ }
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java
index 58044163885..7439e65dee6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java
+++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java
@@ -276,6 +276,9 @@ public class SummaryField extends Field implements Cloneable, TypedKey {
if (sourceName.contains(".")) {
return false;
}
+ if (sources.size() > 1) {
+ return false;
+ }
return true;
}
diff --git a/config-model/src/test/derived/bolding_dynamic_summary/summary.cfg b/config-model/src/test/derived/bolding_dynamic_summary/summary.cfg
index 3703bb8b218..c5d5b86de67 100644
--- a/config-model/src/test/derived/bolding_dynamic_summary/summary.cfg
+++ b/config-model/src/test/derived/bolding_dynamic_summary/summary.cfg
@@ -35,13 +35,13 @@ classes[].fields[].command "summaryfeatures"
classes[].fields[].source ""
classes[].fields[].name "str_3_dyn"
classes[].fields[].command "dynamicteaser"
-classes[].fields[].source "str_3_dyn"
+classes[].fields[].source "str_3"
classes[].fields[].name "arr_3_dyn"
classes[].fields[].command "dynamicteaser"
classes[].fields[].source "arr_3"
classes[].fields[].name "str_4_bold"
classes[].fields[].command "dynamicteaser"
-classes[].fields[].source "str_4_bold"
+classes[].fields[].source "str_4"
classes[].fields[].name "arr_4_bold"
classes[].fields[].command "dynamicteaser"
classes[].fields[].source "arr_4"
@@ -53,13 +53,13 @@ classes[].name "dyn"
classes[].omitsummaryfeatures false
classes[].fields[].name "str_3_dyn"
classes[].fields[].command "dynamicteaser"
-classes[].fields[].source "str_3_dyn"
+classes[].fields[].source "str_3"
classes[].fields[].name "arr_3_dyn"
classes[].fields[].command "dynamicteaser"
classes[].fields[].source "arr_3"
classes[].fields[].name "str_4_bold"
classes[].fields[].command "dynamicteaser"
-classes[].fields[].source "str_4_bold"
+classes[].fields[].source "str_4"
classes[].fields[].name "arr_4_bold"
classes[].fields[].command "dynamicteaser"
classes[].fields[].source "arr_4"
diff --git a/config-model/src/test/derived/multiplesummaries/summary.cfg b/config-model/src/test/derived/multiplesummaries/summary.cfg
index 72543b46c8e..0b2be2b3ab1 100644
--- a/config-model/src/test/derived/multiplesummaries/summary.cfg
+++ b/config-model/src/test/derived/multiplesummaries/summary.cfg
@@ -26,7 +26,7 @@ classes[].fields[].command "dynamicteaser"
classes[].fields[].source "d"
classes[].fields[].name "dynamice"
classes[].fields[].command "dynamicteaser"
-classes[].fields[].source "dynamice"
+classes[].fields[].source "e"
classes[].fields[].name "f"
classes[].fields[].command ""
classes[].fields[].source ""
@@ -47,7 +47,7 @@ classes[].fields[].command ""
classes[].fields[].source ""
classes[].fields[].name "adynamic2"
classes[].fields[].command "dynamicteaser"
-classes[].fields[].source "adynamic2"
+classes[].fields[].source "a"
classes[].fields[].name "alltags"
classes[].fields[].command ""
classes[].fields[].source ""
@@ -59,10 +59,10 @@ classes[].fields[].command ""
classes[].fields[].source ""
classes[].fields[].name "abolded2"
classes[].fields[].command "dynamicteaser"
-classes[].fields[].source "abolded2"
+classes[].fields[].source "a"
classes[].fields[].name "aboldeddynamic"
classes[].fields[].command "dynamicteaser"
-classes[].fields[].source "aboldeddynamic"
+classes[].fields[].source "a"
classes[].fields[].name "documentid"
classes[].fields[].command "documentid"
classes[].fields[].source ""
@@ -131,7 +131,7 @@ classes[].name "anothernotattributesonly2"
classes[].omitsummaryfeatures false
classes[].fields[].name "adynamic2"
classes[].fields[].command "dynamicteaser"
-classes[].fields[].source "adynamic2"
+classes[].fields[].source "a"
classes[].fields[].name "c"
classes[].fields[].command "attribute"
classes[].fields[].source "c"
@@ -209,7 +209,7 @@ classes[].name "notattributesonly4"
classes[].omitsummaryfeatures false
classes[].fields[].name "abolded2"
classes[].fields[].command "dynamicteaser"
-classes[].fields[].source "abolded2"
+classes[].fields[].source "a"
classes[].fields[].name "c"
classes[].fields[].command "attribute"
classes[].fields[].source "c"
@@ -224,7 +224,7 @@ classes[].name "notattributesonly5"
classes[].omitsummaryfeatures false
classes[].fields[].name "aboldeddynamic"
classes[].fields[].command "dynamicteaser"
-classes[].fields[].source "aboldeddynamic"
+classes[].fields[].source "a"
classes[].fields[].name "c"
classes[].fields[].command "attribute"
classes[].fields[].source "c"
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 2071d142da9..b5ebefdbd9c 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
@@ -77,11 +77,11 @@ public class SummaryTestCase extends AbstractSchemaTestCase {
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("dyndesc", SummaryClassField.Type.LONGSTRING, "dynamicteaser", "description", 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("dynlong", SummaryClassField.Type.LONGSTRING, "dynamicteaser", "longdesc", fields.next());
+ assertSummaryField("dyndesc2", SummaryClassField.Type.LONGSTRING, "dynamicteaser", "longdesc", 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());