From 9a70d023b35390eab84dde436d823fbb2683217d Mon Sep 17 00:00:00 2001 From: Ali Tariq Date: Tue, 17 Feb 2026 17:10:12 +0500 Subject: [PATCH] add show performance details field to related endpoints --- .../sdk/MultiSearchFederation.java | 6 +++ .../com/meilisearch/sdk/SearchRequest.java | 4 +- .../sdk/SimilarDocumentRequest.java | 2 + .../sdk/model/MultiSearchResult.java | 1 + .../meilisearch/sdk/model/SearchResult.java | 1 + .../sdk/model/SimilarDocumentsResults.java | 1 + .../meilisearch/integration/SearchTest.java | 37 ++++++++++++++----- 7 files changed, 41 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/meilisearch/sdk/MultiSearchFederation.java b/src/main/java/com/meilisearch/sdk/MultiSearchFederation.java index 67128dc2b..64065c911 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 Boolean showPerformanceDetails; public MultiSearchFederation setLimit(Integer limit) { this.limit = limit; @@ -32,6 +33,11 @@ public MultiSearchFederation setFacetsByIndex(Map facetsByInde return this; } + public MultiSearchFederation setShowPerformanceDetails(Boolean showPerformanceDetails) { + this.showPerformanceDetails = showPerformanceDetails; + return this; + } + /** * Method that returns the JSON String of the MultiSearchFederation * diff --git a/src/main/java/com/meilisearch/sdk/SearchRequest.java b/src/main/java/com/meilisearch/sdk/SearchRequest.java index 43e043cc1..a536aa578 100644 --- a/src/main/java/com/meilisearch/sdk/SearchRequest.java +++ b/src/main/java/com/meilisearch/sdk/SearchRequest.java @@ -46,6 +46,7 @@ public class SearchRequest { protected Hybrid hybrid; protected Double[] vector; protected Boolean retrieveVectors; + protected Boolean showPerformanceDetails; /** * Constructor for SearchRequest for building search queries with the default values: offset: 0, * limit: 20, attributesToRetrieve: ["*"], attributesToCrop: null, cropLength: 200, @@ -110,7 +111,8 @@ public String toString() { .putOpt("locales", this.locales) .putOpt("distinct", this.distinct) .putOpt("vector", this.vector) - .putOpt("retrieveVectors", this.retrieveVectors); + .putOpt("retrieveVectors", this.retrieveVectors) + .putOpt("showPerformanceDetails", this.showPerformanceDetails); if (this.hybrid != null) { jsonObject.put("hybrid", this.hybrid.toJSONObject()); diff --git a/src/main/java/com/meilisearch/sdk/SimilarDocumentRequest.java b/src/main/java/com/meilisearch/sdk/SimilarDocumentRequest.java index 0e9c869c6..5856247f9 100644 --- a/src/main/java/com/meilisearch/sdk/SimilarDocumentRequest.java +++ b/src/main/java/com/meilisearch/sdk/SimilarDocumentRequest.java @@ -20,6 +20,7 @@ public class SimilarDocumentRequest { private Boolean showRankingScoreDetails; private Double rankingScoreThreshold; private Boolean retrieveVectors; + private Boolean showPerformanceDetails; /** Constructor for SimilarDocumentsRequest for building search request for similar documents */ public SimilarDocumentRequest() {} @@ -37,6 +38,7 @@ public String toString() { jsonObject.putOpt("showRankingScoreDetails", this.showRankingScoreDetails); jsonObject.putOpt("rankingScoreThreshold", this.rankingScoreThreshold); jsonObject.putOpt("retrieveVectors", this.retrieveVectors); + jsonObject.putOpt("showPerformanceDetails", this.showPerformanceDetails); return jsonObject.toString(); } diff --git a/src/main/java/com/meilisearch/sdk/model/MultiSearchResult.java b/src/main/java/com/meilisearch/sdk/model/MultiSearchResult.java index 666467544..63cd2c116 100644 --- a/src/main/java/com/meilisearch/sdk/model/MultiSearchResult.java +++ b/src/main/java/com/meilisearch/sdk/model/MultiSearchResult.java @@ -23,6 +23,7 @@ public class MultiSearchResult implements Searchable { int limit; int estimatedTotalHits; HashMap facetsByIndex; + HashMap performanceDetails; public MultiSearchResult() {} } diff --git a/src/main/java/com/meilisearch/sdk/model/SearchResult.java b/src/main/java/com/meilisearch/sdk/model/SearchResult.java index 0640d4d22..10ebe0894 100644 --- a/src/main/java/com/meilisearch/sdk/model/SearchResult.java +++ b/src/main/java/com/meilisearch/sdk/model/SearchResult.java @@ -24,6 +24,7 @@ public class SearchResult implements Searchable { int limit; int estimatedTotalHits; HashMap _vectors; + HashMap performanceDetails; public SearchResult() {} } diff --git a/src/main/java/com/meilisearch/sdk/model/SimilarDocumentsResults.java b/src/main/java/com/meilisearch/sdk/model/SimilarDocumentsResults.java index b64b8d108..785c526cb 100644 --- a/src/main/java/com/meilisearch/sdk/model/SimilarDocumentsResults.java +++ b/src/main/java/com/meilisearch/sdk/model/SimilarDocumentsResults.java @@ -20,4 +20,5 @@ public class SimilarDocumentsResults { int offset; int limit; int estimatedTotalHits; + HashMap performanceDetails; } diff --git a/src/test/java/com/meilisearch/integration/SearchTest.java b/src/test/java/com/meilisearch/integration/SearchTest.java index f671758ed..17a56621b 100644 --- a/src/test/java/com/meilisearch/integration/SearchTest.java +++ b/src/test/java/com/meilisearch/integration/SearchTest.java @@ -1,15 +1,7 @@ package com.meilisearch.integration; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.arrayWithSize; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.greaterThanOrEqualTo; -import static org.hamcrest.Matchers.hasLength; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.instanceOf; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.not; -import static org.hamcrest.Matchers.nullValue; +import static org.hamcrest.Matchers.*; import com.meilisearch.integration.classes.AbstractIT; import com.meilisearch.integration.classes.TestData; @@ -842,6 +834,7 @@ public void testFederation() throws Exception { MultiSearchFederation federation = new MultiSearchFederation(); federation.setLimit(2); + federation.setShowPerformanceDetails(true); MultiSearchResult results = client.multiSearch(search, federation); assertThat(results.getEstimatedTotalHits(), is(2)); @@ -851,6 +844,7 @@ public void testFederation() throws Exception { for (HashMap record : hits) { assertThat(record.containsKey("_federation"), is(true)); } + assertThat(results.getPerformanceDetails(), aMapWithSize(greaterThan(0))); } /** Test multisearch with ranking score threshold */ @@ -1106,7 +1100,10 @@ public void testSimilarDocuments() throws Exception { SimilarDocumentsResults results = index.searchSimilarDocuments( - new SimilarDocumentRequest().setId("143").setEmbedder("manual")); + new SimilarDocumentRequest() + .setId("143") + .setEmbedder("manual") + .setShowPerformanceDetails(true)); ArrayList> hits = results.getHits(); assertThat(hits.size(), is(4)); @@ -1114,6 +1111,7 @@ public void testSimilarDocuments() throws Exception { assertThat(hits.get(1).get("title"), is("Captain Marvel")); assertThat(hits.get(2).get("title"), is("How to Train Your Dragon: The Hidden World")); assertThat(hits.get(3).get("title"), is("Shazam!")); + assertThat(results.getPerformanceDetails(), aMapWithSize(greaterThan(0))); } /** Test vector search */ @@ -1307,4 +1305,23 @@ public void testSearchWithRetrieveVectors() throws Exception { Map vectors = (Map) hitWith.get("_vectors"); assertThat(vectors.containsKey("manual"), is(true)); } + + @Test + public void testSearchWithPerformanceDetails() throws Exception { + String indexUid = "testSearchWithPerformanceDetails"; + Index index = client.index(indexUid); + + TestData testData = this.getTestData(MOVIES_INDEX, Movie.class); + TaskInfo task = index.addDocuments(testData.getRaw()); + + index.waitForTask(task.getTaskUid()); + + SearchRequest searchRequest = + SearchRequest.builder().q("a").showPerformanceDetails(true).build(); + SearchResult searchResult = (SearchResult) index.search(searchRequest); + + assertThat(searchResult.getHits(), hasSize(11)); + assertThat(searchResult.getEstimatedTotalHits(), is(equalTo(31))); + assertThat(searchResult.getPerformanceDetails(), aMapWithSize(greaterThan(0))); + } }