Skip to content

Commit 8bb69bf

Browse files
committed
add support for modal search
1 parent be39947 commit 8bb69bf

6 files changed

Lines changed: 167 additions & 106 deletions

File tree

.code-samples.meilisearch.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -648,3 +648,14 @@ webhooks_patch_1: |-
648648
Webhook updated_webhook = this.client.updateWebhook(webhook.getUuid(), webhookReq2);
649649
webhooks_delete_1: |-
650650
this.client.deleteWebhook("WEBHOOK_UUID");
651+
search_parameter_reference_media_1: |-
652+
Hybrid hybrid = Hybrid.builder().embedder("EMBEDDER_NAME").build();
653+
SearchRequest searchRequest = SearchRequest.builder().
654+
hybrid(hybrid).media(JsonParser.parseString("""
655+
{
656+
"FEILD_A": "VALUE_A",
657+
"FIELD_B": {
658+
"FIELD_C": "VALUE_B",
659+
"FIELD_D": "VALUE_C"
660+
}}""")).build();
661+
client.search("movies", searchRequest);

gradlew.bat

Lines changed: 93 additions & 93 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/com/meilisearch/sdk/SearchRequest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.meilisearch.sdk;
22

3+
import com.google.gson.JsonElement;
34
import com.meilisearch.sdk.model.Hybrid;
45
import com.meilisearch.sdk.model.MatchingStrategy;
56
import lombok.AccessLevel;
@@ -46,6 +47,7 @@ public class SearchRequest {
4647
protected Hybrid hybrid;
4748
protected Double[] vector;
4849
protected Boolean retrieveVectors;
50+
protected JsonElement media;
4951
/**
5052
* Constructor for SearchRequest for building search queries with the default values: offset: 0,
5153
* limit: 20, attributesToRetrieve: ["*"], attributesToCrop: null, cropLength: 200,

src/main/java/com/meilisearch/sdk/model/Embedder.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.meilisearch.sdk.model;
22

33
import com.fasterxml.jackson.annotation.JsonInclude;
4+
import java.util.HashMap;
45
import java.util.Map;
56
import lombok.*;
67
import lombok.experimental.Accessors;
@@ -69,5 +70,15 @@ public class Embedder {
6970
/** Query for the embedder. Optional. */
7071
protected String query;
7172

73+
/**
74+
* Template fragments that will be reassembled and sent to the remote embedder at indexing time.
75+
*/
76+
protected HashMap<String, EmbedderFragment> indexingFragments;
77+
78+
/**
79+
* Template fragments that will be reassembled and sent to the remote embedder at indexing time.
80+
*/
81+
protected HashMap<String, EmbedderFragment> searchFragments;
82+
7283
public Embedder() {}
7384
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.meilisearch.sdk.model;
2+
3+
import com.google.gson.JsonElement;
4+
import lombok.Builder;
5+
6+
@Builder
7+
public class EmbedderFragment {
8+
protected JsonElement value;
9+
}

src/test/java/com/meilisearch/integration/SettingsTest.java

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,12 @@
1414
import static org.hamcrest.Matchers.notNullValue;
1515
import static org.junit.jupiter.api.Assertions.assertThrows;
1616

17+
import com.google.gson.JsonParser;
1718
import com.meilisearch.integration.classes.AbstractIT;
1819
import com.meilisearch.integration.classes.TestData;
1920
import com.meilisearch.sdk.Index;
2021
import com.meilisearch.sdk.exceptions.GranularFilterableAttributesException;
21-
import com.meilisearch.sdk.model.Embedder;
22-
import com.meilisearch.sdk.model.EmbedderDistribution;
23-
import com.meilisearch.sdk.model.EmbedderSource;
24-
import com.meilisearch.sdk.model.FacetSortValue;
25-
import com.meilisearch.sdk.model.Faceting;
26-
import com.meilisearch.sdk.model.FilterableAttributesConfig;
27-
import com.meilisearch.sdk.model.FilterableAttributesFeatures;
28-
import com.meilisearch.sdk.model.FilterableAttributesFilter;
29-
import com.meilisearch.sdk.model.LocalizedAttribute;
30-
import com.meilisearch.sdk.model.Pagination;
31-
import com.meilisearch.sdk.model.Settings;
32-
import com.meilisearch.sdk.model.TaskInfo;
33-
import com.meilisearch.sdk.model.TypoTolerance;
22+
import com.meilisearch.sdk.model.*;
3423
import com.meilisearch.sdk.utils.Movie;
3524
import java.util.ArrayList;
3625
import java.util.Arrays;
@@ -1586,11 +1575,45 @@ public void testGetEmbeddersSettings() throws Exception {
15861575
}
15871576

15881577
public Embedder createUserProvidedEmbedder() {
1578+
HashMap<String, EmbedderFragment> indexingFragment = new HashMap<>();
1579+
indexingFragment.put(
1580+
"text",
1581+
EmbedderFragment.builder()
1582+
.value(
1583+
JsonParser.parseString(
1584+
"""
1585+
{
1586+
"content": [
1587+
{
1588+
"type": "text",
1589+
"text": "A movie titled {{doc.title}} whose description starts with {{doc.overview|truncateWords:20}}."
1590+
}
1591+
]
1592+
}"""))
1593+
.build());
1594+
HashMap<String, EmbedderFragment> searchFragment = new HashMap<>();
1595+
indexingFragment.put(
1596+
"text",
1597+
EmbedderFragment.builder()
1598+
.value(
1599+
JsonParser.parseString(
1600+
"""
1601+
{
1602+
"content": [
1603+
{
1604+
"type": "image_url",
1605+
"image_url": "https://static.vecteezy.com/system/resources/thumbnails/057/068/323/small/single-fresh-red-strawberry-on-table-green-background-food-fruit-sweet-macro-juicy-plant-image-photo.jpg"
1606+
}
1607+
]
1608+
}"""))
1609+
.build());
15891610
return Embedder.builder()
15901611
.source(EmbedderSource.USER_PROVIDED)
15911612
.dimensions(1)
15921613
.distribution(EmbedderDistribution.builder().mean(0.7).sigma(0.3).build())
15931614
.binaryQuantized(false)
1615+
.indexingFragments(indexingFragment)
1616+
.searchFragments(searchFragment)
15941617
.build();
15951618
}
15961619

@@ -1618,6 +1641,11 @@ public void testUpdateEmbeddersSettings() throws Exception {
16181641
is(equalTo(embedder.getDistribution().getSigma())));
16191642
assertThat(
16201643
retrievedEmbedder.getBinaryQuantized(), is(equalTo(embedder.getBinaryQuantized())));
1644+
assertThat(
1645+
retrievedEmbedder.getIndexingFragments(),
1646+
is(equalTo(embedder.getIndexingFragments())));
1647+
assertThat(
1648+
retrievedEmbedder.getSearchFragments(), is(equalTo(embedder.getSearchFragments())));
16211649
}
16221650

16231651
@Test

0 commit comments

Comments
 (0)