summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/yql/FieldFiller.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-09-01 16:10:13 +0200
committerGitHub <noreply@github.com>2022-09-01 16:10:13 +0200
commita848c7d6e01769b5c907f551daa239b05eff7fb7 (patch)
tree196798c690f476bd5c40ea9cf1840d24e1e0e3eb /container-search/src/main/java/com/yahoo/search/yql/FieldFiller.java
parent96d24924eed043c9d8df7694375828745889faa2 (diff)
parent9e0becc037f73ae345a9f96ecaa155e799ca5b64 (diff)
Merge pull request #23893 from vespa-engine/arnej/optimize-field-filler
try harder to avoid disk access
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/yql/FieldFiller.java')
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/FieldFiller.java29
1 files changed, 16 insertions, 13 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/yql/FieldFiller.java b/container-search/src/main/java/com/yahoo/search/yql/FieldFiller.java
index db44e13c27e..833c1251a7b 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/FieldFiller.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/FieldFiller.java
@@ -60,24 +60,27 @@ public class FieldFiller extends Searcher {
@Override
public void fill(Result result, String summaryClass, Execution execution) {
- execution.fill(result, summaryClass);
-
Set<String> summaryFields = result.getQuery().getPresentation().getSummaryFields();
-
- if (summaryFields.isEmpty() || summaryClass == null ||
- result.getQuery().properties().getBoolean(FIELD_FILLER_DISABLE)) {
+ if (summaryFields.isEmpty() || result.getQuery().properties().getBoolean(FIELD_FILLER_DISABLE)) {
+ // no special handling:
+ execution.fill(result, summaryClass);
return;
}
-
- if (intersectionOfAttributes.containsAll(summaryFields)) {
- if (! SORTABLE_ATTRIBUTES_SUMMARY_CLASS.equals(summaryClass)) {
- execution.fill(result, SORTABLE_ATTRIBUTES_SUMMARY_CLASS);
+ if (summaryClass != null) {
+ // always fill requested class:
+ execution.fill(result, summaryClass);
+ if (hasAll(summaryFields, summaryClass, result.getQuery().getModel().getRestrict())) {
+ // no more was needed:
+ return;
}
+ }
+ // we need more:
+ if (intersectionOfAttributes.containsAll(summaryFields)) {
+ // only attributes needed:
+ execution.fill(result, SORTABLE_ATTRIBUTES_SUMMARY_CLASS);
} else {
- // Yes, summaryClass may be SORTABLE_ATTRIBUTES_SUMMARY_CLASS here
- if ( ! hasAll(summaryFields, summaryClass, result.getQuery().getModel().getRestrict())) {
- execution.fill(result, null);
- }
+ // fetch all summary fields:
+ execution.fill(result, null);
}
}