From ee89f33e2bd062ac1f3ad2caa5c881af7ab2a6c0 Mon Sep 17 00:00:00 2001 From: Balazs Barabas Date: Sat, 2 Nov 2024 17:05:30 +0200 Subject: [PATCH] added locales to indexsearchrequest --- .../meilisearch/sdk/IndexSearchRequest.java | 4 +- .../meilisearch/integration/SearchTest.java | 48 +++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/meilisearch/sdk/IndexSearchRequest.java b/src/main/java/com/meilisearch/sdk/IndexSearchRequest.java index b4671fae..077fb002 100644 --- a/src/main/java/com/meilisearch/sdk/IndexSearchRequest.java +++ b/src/main/java/com/meilisearch/sdk/IndexSearchRequest.java @@ -36,6 +36,7 @@ public class IndexSearchRequest { protected Double rankingScoreThreshold; private String[] attributesToSearchOn; private FederationOptions federationOptions; + protected String[] locales; /** * Constructor for MultiSearchRequest for building search queries with the default values: @@ -101,7 +102,8 @@ public String toString() { .putOpt("showRankingScore", this.showRankingScore) .putOpt("showRankingScoreDetails", this.showRankingScoreDetails) .putOpt("rankingScoreThreshold", this.rankingScoreThreshold) - .putOpt("attributesToSearchOn", this.attributesToSearchOn); + .putOpt("attributesToSearchOn", this.attributesToSearchOn) + .putOpt("locales", this.locales); return jsonObject.toString(); } diff --git a/src/test/java/com/meilisearch/integration/SearchTest.java b/src/test/java/com/meilisearch/integration/SearchTest.java index 64fdd012..86ccaeb5 100644 --- a/src/test/java/com/meilisearch/integration/SearchTest.java +++ b/src/test/java/com/meilisearch/integration/SearchTest.java @@ -933,4 +933,52 @@ public void testSearchWithLocales() throws Exception { assertThat(resGson.hits, is(arrayWithSize(2))); } + + /** Test multisearch with locales */ + @Test + public void testMultiSearchWithLocales() throws Exception { + HashSet indexUids = new HashSet(); + indexUids.add("LocaleSearch1"); + indexUids.add("LocaleSearch2"); + + for (String indexUid : indexUids) { + Index index = client.index(indexUid); + + TestData testData = this.getTestData(NESTED_MOVIES, Movie.class); + TaskInfo task = index.addDocuments(testData.getRaw()); + + index.waitForTask(task.getTaskUid()); + + Settings settings = index.getSettings(); + + LocalizedAttribute localizedAttribute = new LocalizedAttribute(); + localizedAttribute.setAttributePatterns(new String[] {"title", "comment"}); + localizedAttribute.setLocales(new String[] {"fra", "eng"}); + settings.setLocalizedAttributes(new LocalizedAttribute[] {localizedAttribute}); + + index.waitForTask(index.updateSettings(settings).getTaskUid()); + } + + MultiSearchRequest search = new MultiSearchRequest(); + + search.addQuery( + new IndexSearchRequest("LocaleSearch1") + .setQuery("") + .setLocales( + new String[] {"eng"})); + search.addQuery( + new IndexSearchRequest("LocaleSearch2") + .setQuery("french") + .setLocales(new String[] {"fra"})); + + MultiSearchResult[] results = client.multiSearch(search).getResults(); + + assertThat(results.length, is(2)); + + for (MultiSearchResult searchResult : results) { + assertThat(indexUids.contains(searchResult.getIndexUid()), is(true)); + } + assertThat(results[0].getHits().size(), is(7)); + assertThat(results[1].getHits().size(), is(2)); + } }