Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .code-samples.meilisearch.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -648,3 +648,14 @@ webhooks_patch_1: |-
Webhook updated_webhook = this.client.updateWebhook(webhook.getUuid(), webhookReq2);
webhooks_delete_1: |-
this.client.deleteWebhook("WEBHOOK_UUID");
search_parameter_reference_media_1: |-
Hybrid hybrid = Hybrid.builder().embedder("EMBEDDER_NAME").build();
SearchRequest searchRequest = SearchRequest.builder().
hybrid(hybrid).media(JsonParser.parseString("""
{
"FIELD_A": "VALUE_A",
"FIELD_B": {
"FIELD_C": "VALUE_B",
"FIELD_D": "VALUE_C"
}}""")).build();
client.search("movies", searchRequest);
Comment thread
coderabbitai[bot] marked this conversation as resolved.
186 changes: 93 additions & 93 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion src/main/java/com/meilisearch/sdk/SearchRequest.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.meilisearch.sdk;

import com.google.gson.JsonElement;
import com.meilisearch.sdk.model.Hybrid;
import com.meilisearch.sdk.model.MatchingStrategy;
import lombok.AccessLevel;
Expand Down Expand Up @@ -46,6 +47,7 @@ public class SearchRequest {
protected Hybrid hybrid;
protected Double[] vector;
protected Boolean retrieveVectors;
protected JsonElement media;
Comment thread
coderabbitai[bot] marked this conversation as resolved.
/**
* Constructor for SearchRequest for building search queries with the default values: offset: 0,
* limit: 20, attributesToRetrieve: ["*"], attributesToCrop: null, cropLength: 200,
Expand Down Expand Up @@ -110,7 +112,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("media", this.media);

if (this.hybrid != null) {
jsonObject.put("hybrid", this.hybrid.toJSONObject());
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/com/meilisearch/sdk/model/Embedder.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.meilisearch.sdk.model;

import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.HashMap;
import java.util.Map;
import lombok.*;
import lombok.experimental.Accessors;
Expand Down Expand Up @@ -69,5 +70,15 @@ public class Embedder {
/** Query for the embedder. Optional. */
protected String query;

/**
* Template fragments that will be reassembled and sent to the remote embedder at indexing time.
*/
protected HashMap<String, EmbedderFragment> indexingFragments;

/**
* Template fragments that will be reassembled and sent to the remote embedder at search time.
*/
protected HashMap<String, EmbedderFragment> searchFragments;
Comment thread
coderabbitai[bot] marked this conversation as resolved.

public Embedder() {}
}
14 changes: 14 additions & 0 deletions src/main/java/com/meilisearch/sdk/model/EmbedderFragment.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.meilisearch.sdk.model;

import com.google.gson.JsonElement;
import lombok.*;

@Builder
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PACKAGE)
@EqualsAndHashCode
public class EmbedderFragment {
protected JsonElement value;
}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
54 changes: 41 additions & 13 deletions src/test/java/com/meilisearch/integration/SettingsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,23 +14,12 @@
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.jupiter.api.Assertions.assertThrows;

import com.google.gson.JsonParser;
import com.meilisearch.integration.classes.AbstractIT;
import com.meilisearch.integration.classes.TestData;
import com.meilisearch.sdk.Index;
import com.meilisearch.sdk.exceptions.GranularFilterableAttributesException;
import com.meilisearch.sdk.model.Embedder;
import com.meilisearch.sdk.model.EmbedderDistribution;
import com.meilisearch.sdk.model.EmbedderSource;
import com.meilisearch.sdk.model.FacetSortValue;
import com.meilisearch.sdk.model.Faceting;
import com.meilisearch.sdk.model.FilterableAttributesConfig;
import com.meilisearch.sdk.model.FilterableAttributesFeatures;
import com.meilisearch.sdk.model.FilterableAttributesFilter;
import com.meilisearch.sdk.model.LocalizedAttribute;
import com.meilisearch.sdk.model.Pagination;
import com.meilisearch.sdk.model.Settings;
import com.meilisearch.sdk.model.TaskInfo;
import com.meilisearch.sdk.model.TypoTolerance;
import com.meilisearch.sdk.model.*;
import com.meilisearch.sdk.utils.Movie;
import java.util.ArrayList;
import java.util.Arrays;
Expand Down Expand Up @@ -1586,11 +1575,45 @@ public void testGetEmbeddersSettings() throws Exception {
}

public Embedder createUserProvidedEmbedder() {
HashMap<String, EmbedderFragment> indexingFragment = new HashMap<>();
indexingFragment.put(
"text",
EmbedderFragment.builder()
.value(
JsonParser.parseString(
"""
{
"content": [
{
"type": "text",
"text": "A movie titled {{doc.title}} whose description starts with {{doc.overview|truncateWords:20}}."
}
]
}"""))
.build());
HashMap<String, EmbedderFragment> searchFragment = new HashMap<>();
searchFragment.put(
"text",
EmbedderFragment.builder()
.value(
JsonParser.parseString(
"""
Comment thread
coderabbitai[bot] marked this conversation as resolved.
{
"content": [
{
"type": "image_url",
"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"
}
]
}"""))
.build());
return Embedder.builder()
.source(EmbedderSource.USER_PROVIDED)
.dimensions(1)
.distribution(EmbedderDistribution.builder().mean(0.7).sigma(0.3).build())
.binaryQuantized(false)
.indexingFragments(indexingFragment)
.searchFragments(searchFragment)
.build();
}

Expand Down Expand Up @@ -1618,6 +1641,11 @@ public void testUpdateEmbeddersSettings() throws Exception {
is(equalTo(embedder.getDistribution().getSigma())));
assertThat(
retrievedEmbedder.getBinaryQuantized(), is(equalTo(embedder.getBinaryQuantized())));
assertThat(
retrievedEmbedder.getIndexingFragments(),
is(equalTo(embedder.getIndexingFragments())));
assertThat(
retrievedEmbedder.getSearchFragments(), is(equalTo(embedder.getSearchFragments())));
}

@Test
Expand Down