diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-04-17 23:26:32 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-04-17 23:26:32 +0200 |
commit | 787edd159fb233dd2f46ebb2452dd4d0326178ba (patch) | |
tree | 018080f52902f763439eb3324d4f94ae648b953d | |
parent | 44328388745afbd80c46976ec9441aedf9189b67 (diff) |
Don't use RPC if a position is set. Robus docsum selection
5 files changed, 18 insertions, 27 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java index 3ecc01a5e8e..c9e771fe48c 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java @@ -13,7 +13,6 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -54,15 +53,21 @@ public final class DocsumDefinitionSet { LegacyEmulationConfig legacyEmulationConfig() { return emulationConfig; } /** - * Returns a docsum definition by name, or null if not found + * Returns the summary definition of the given name, or the default if not found. * - * @param name the name of the summary class to use, or null to use the name "default" - * @return the summary class found, or null if none + * @throws ConfigurationException if the requested summary class is not found and there is none called "default" */ - public final DocsumDefinition getDocsumDefinition(String name) { - if (name == null) - name="default"; - return definitionsByName.get(name); + public DocsumDefinition getDocsum(String summaryClass) { + DocsumDefinition ds = definitionsByName.get(summaryClass); + if (ds == null) { + ds = definitionsByName.get("default"); + } + if (ds == null) { + throw new ConfigurationException("Fetched hit with summary class " + summaryClass + + ", but this summary class is not in current summary config (" + toString() + ")" + + " (that is, you asked for something unknown, and no default was found)"); + } + return ds; } /** @@ -81,7 +86,7 @@ public final class DocsumDefinitionSet { if (docsumClassId != SLIME_MAGIC_ID) { throw new IllegalArgumentException("Only expecting SchemaLess docsums - summary class:" + summaryClass + " hit:" + hit); } - DocsumDefinition docsumDefinition = lookupDocsum(summaryClass); + DocsumDefinition docsumDefinition = getDocsum(summaryClass); Slime value = BinaryFormat.decode(buffer.array(), buffer.arrayOffset()+buffer.position(), buffer.remaining()); Inspector docsum = new SlimeAdapter(value.get()); if (docsum.type() != OBJECT) { @@ -91,19 +96,6 @@ public final class DocsumDefinitionSet { return null; } - private DocsumDefinition lookupDocsum(String summaryClass) { - DocsumDefinition ds = definitionsByName.get(summaryClass); - if (ds == null) { - ds = definitionsByName.get("default"); - } - if (ds == null) { - throw new ConfigurationException("Fetched hit with summary class " + summaryClass + - ", but this summary class is not in current summary config (" + toString() + ")" + - " (that is, you asked for something unknown, and no default was found)"); - } - return ds; - } - public String toString() { StringBuilder sb = new StringBuilder(); for (Map.Entry<String, DocsumDefinition> e : definitionsByName.entrySet() ) { diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java index e5f255f18c0..004e01ff5fa 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java @@ -261,6 +261,7 @@ public class FastSearcher extends VespaBackEndSearcher { if (query.properties().getBoolean(dispatchSummaries, true) && ! summaryNeedsQuery(query) + && query.getRanking().getLocation() == null && ! cacheControl.useCache(query) && ! legacyEmulationConfigIsSet(getDocumentDatabase(query))) { diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java index e5c9f048e53..97f60984f3d 100644 --- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java @@ -118,8 +118,7 @@ public abstract class VespaBackEndSearcher extends PingableSearcher { DocumentDatabase documentDb = getDocumentDatabase(query); // Needed to generate a dynamic summary? - DocsumDefinition docsumDefinition = documentDb.getDocsumDefinitionSet().getDocsumDefinition(query.getPresentation().getSummary()); - if (docsumDefinition == null) return true; // stay safe + DocsumDefinition docsumDefinition = documentDb.getDocsumDefinitionSet().getDocsum(query.getPresentation().getSummary()); if (docsumDefinition.isDynamic()) return true; // Needed to generate ranking features? diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java b/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java index 1b6ba5cc085..47413272343 100644 --- a/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java +++ b/container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java @@ -1,7 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.search.dispatch; -import com.google.common.annotations.Beta; import com.google.common.collect.ImmutableMap; import com.yahoo.collections.ListMap; import com.yahoo.component.AbstractComponent; @@ -266,7 +265,7 @@ public class Dispatcher extends AbstractComponent { for (int i = 0; i < hits.size(); i++) { Inspector summary = summaries.entry(i).field("docsum"); if (summary.fieldCount() != 0) { - hits.get(i).addSummary(documentDb.getDocsumDefinitionSet().getDocsumDefinition(summaryClass), summary); + hits.get(i).addSummary(documentDb.getDocsumDefinitionSet().getDocsum(summaryClass), summary); } else { skippedHits++; } diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/DocsumDefinitionTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/DocsumDefinitionTestCase.java index 1abfea268f2..b0bbdda32df 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/DocsumDefinitionTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/DocsumDefinitionTestCase.java @@ -47,7 +47,7 @@ public class DocsumDefinitionTestCase { } assertEquals(7, set.size()); - DocsumDefinition docsum0 = set.getDocsumDefinition("default"); + DocsumDefinition docsum0 = set.getDocsum("default"); assertNotNull(docsum0); assertEquals("default", docsum0.getName()); |