summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-09-01 21:55:30 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2022-09-01 22:19:25 +0200
commit1583768921c1703475458428c9faf5d88acdff27 (patch)
tree9cd27c2160acc40f92737a1edcbac50d5c32a9c1 /container-search
parent36bead13fbbd0b3ce5c5a364b6f07ee1d3555b9b (diff)
- Add fieldlist to docsum request.
- Only return fields requested from the backend.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java5
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcProtobufFillInvoker.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java5
3 files changed, 9 insertions, 3 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java
index e5fa37e7a65..09a101e3bff 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/ProtobufSerialization.java
@@ -33,6 +33,7 @@ import com.yahoo.vespa.objects.BufferSerializer;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
import java.util.function.Consumer;
public class ProtobufSerialization {
@@ -130,6 +131,7 @@ public class ProtobufSerialization {
static SearchProtocol.DocsumRequest.Builder createDocsumRequestBuilder(Query query,
String serverId,
String summaryClass,
+ Set<String> fields,
boolean includeQueryData,
double requestTimeout) {
var builder = SearchProtocol.DocsumRequest.newBuilder()
@@ -139,6 +141,9 @@ public class ProtobufSerialization {
if (summaryClass != null) {
builder.setSummaryClass(summaryClass);
}
+ if (fields != null) {
+ builder.addAllFields(fields);
+ }
var documentDb = query.getModel().getDocumentDb();
if (documentDb != null) {
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcProtobufFillInvoker.java b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcProtobufFillInvoker.java
index 9e426cfe164..c84795352f5 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcProtobufFillInvoker.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/rpc/RpcProtobufFillInvoker.java
@@ -88,7 +88,7 @@ public class RpcProtobufFillInvoker extends FillInvoker {
return;
}
var builder = ProtobufSerialization.createDocsumRequestBuilder(
- result.getQuery(), serverId, summaryClass, summaryNeedsQuery, timeout.request());
+ result.getQuery(), serverId, summaryClass, result.getQuery().getPresentation().getSummaryFields(), summaryNeedsQuery, timeout.request());
hitsByNode.forEach((nodeId, hits) -> {
var payload = ProtobufSerialization.serializeDocsumRequest(builder, hits);
sendDocsumsRequest(nodeId, hits, payload, result, timeout.client());
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java
index 72b3095b2f9..6f7a1f3bd8b 100644
--- a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java
+++ b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java
@@ -16,6 +16,7 @@ import org.junit.jupiter.api.Test;
import java.util.Collections;
import java.util.List;
+import java.util.Set;
import static org.junit.jupiter.api.Assertions.*;
@@ -60,13 +61,13 @@ public class ProtobufSerializationTest {
@Test
void testDocsumSerialization() {
Query q = new Query("search/?query=test&hits=10&offset=3");
- var builder = ProtobufSerialization.createDocsumRequestBuilder(q, "server", "summary", true, 0.5);
+ var builder = ProtobufSerialization.createDocsumRequestBuilder(q, "server", "summary", Set.of("f1", "f2"),true, 0.5);
builder.setTimeout(0);
var hit = new FastHit();
hit.setGlobalId(new GlobalId(IdString.createIdString("id:ns:type::id")).getRawId());
var bytes = ProtobufSerialization.serializeDocsumRequest(builder, Collections.singletonList(hit));
- assertEquals(46, bytes.length);
+ assertEquals(56, bytes.length);
}
private String contentsOf(ByteString property) {