summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2018-04-17 23:26:32 +0200
committerJon Bratseth <bratseth@oath.com>2018-04-17 23:26:32 +0200
commit787edd159fb233dd2f46ebb2452dd4d0326178ba (patch)
tree018080f52902f763439eb3324d4f94ae648b953d /container-search/src/main/java/com/yahoo
parent44328388745afbd80c46976ec9441aedf9189b67 (diff)
Don't use RPC if a position is set. Robus docsum selection
Diffstat (limited to 'container-search/src/main/java/com/yahoo')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/DocsumDefinitionSet.java36
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java1
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/VespaBackEndSearcher.java3
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/Dispatcher.java3
4 files changed, 17 insertions, 26 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++;
}