From 99af7a2cb4174b80b3e362d184ca17dd8115f83d Mon Sep 17 00:00:00 2001 From: GabrielBBaldez <130607246+GabrielBBaldez@users.noreply.github.com> Date: Thu, 18 Jun 2026 20:02:08 -0300 Subject: [PATCH] feat: support distinct in federated search --- .../sdk/MultiSearchFederation.java | 6 ++++ .../sdk/MultiSearchFederationTest.java | 28 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 src/test/java/com/meilisearch/sdk/MultiSearchFederationTest.java diff --git a/src/main/java/com/meilisearch/sdk/MultiSearchFederation.java b/src/main/java/com/meilisearch/sdk/MultiSearchFederation.java index 67128dc2..ede797fd 100644 --- a/src/main/java/com/meilisearch/sdk/MultiSearchFederation.java +++ b/src/main/java/com/meilisearch/sdk/MultiSearchFederation.java @@ -11,6 +11,7 @@ public class MultiSearchFederation { private Integer offset; private MergeFacets mergeFacets; private Map facetsByIndex; + private String distinct; public MultiSearchFederation setLimit(Integer limit) { this.limit = limit; @@ -32,6 +33,11 @@ public MultiSearchFederation setFacetsByIndex(Map facetsByInde return this; } + public MultiSearchFederation setDistinct(String distinct) { + this.distinct = distinct; + return this; + } + /** * Method that returns the JSON String of the MultiSearchFederation * diff --git a/src/test/java/com/meilisearch/sdk/MultiSearchFederationTest.java b/src/test/java/com/meilisearch/sdk/MultiSearchFederationTest.java new file mode 100644 index 00000000..71743f6a --- /dev/null +++ b/src/test/java/com/meilisearch/sdk/MultiSearchFederationTest.java @@ -0,0 +1,28 @@ +package com.meilisearch.sdk; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.not; + +import com.meilisearch.sdk.exceptions.MeilisearchException; +import com.meilisearch.sdk.json.GsonJsonHandler; +import org.junit.jupiter.api.Test; + +class MultiSearchFederationTest { + + private final GsonJsonHandler jsonHandler = new GsonJsonHandler(); + + @Test + void serializesDistinctInFederationOptions() throws MeilisearchException { + MultiSearchFederation federation = new MultiSearchFederation().setDistinct("movie_id"); + + assertThat(jsonHandler.encode(federation), containsString("\"distinct\":\"movie_id\"")); + } + + @Test + void omitsDistinctWhenNotSet() throws MeilisearchException { + MultiSearchFederation federation = new MultiSearchFederation().setLimit(10); + + assertThat(jsonHandler.encode(federation), not(containsString("distinct"))); + } +}