Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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
6 changes: 6 additions & 0 deletions src/main/java/com/meilisearch/sdk/IndexSearchRequest.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.meilisearch.sdk;

import com.meilisearch.sdk.model.Hybrid;
import com.meilisearch.sdk.model.MatchingStrategy;
import lombok.*;
import lombok.experimental.Accessors;
Expand Down Expand Up @@ -38,6 +39,7 @@ public class IndexSearchRequest {
private FederationOptions federationOptions;
protected String[] locales;
protected String distinct;
protected Hybrid hybrid;
protected Boolean retrieveVectors;

/**
Expand Down Expand Up @@ -110,6 +112,10 @@ public String toString() {
.putOpt("distinct", this.distinct)
.putOpt("retrieveVectors", this.retrieveVectors);

if (this.hybrid != null) {
jsonObject.put("hybrid", this.hybrid.toJSONObject());
}

return jsonObject.toString();
}
}
57 changes: 57 additions & 0 deletions src/test/java/com/meilisearch/sdk/IndexSearchRequestTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package com.meilisearch.sdk;

import com.meilisearch.sdk.model.Hybrid;
import org.junit.jupiter.api.Test;

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;

class IndexIndexSearchRequestTest {
@Test
void toStringWithHybridUsingBuilder() {
IndexSearchRequest classToTest =
IndexSearchRequest.builder()
.q("This is a Test")
.hybrid(Hybrid.builder().semanticRatio(0.5).embedder("default").build())
.build();

String expected =
"{\"q\":\"This is a Test\",\"hybrid\":{\"semanticRatio\":0.5,\"embedder\":\"default\"}}";
assertThat(classToTest.toString(), is(equalTo(expected)));

// Verify getters
assertThat(classToTest.getHybrid().getSemanticRatio(), is(equalTo(0.5)));
assertThat(classToTest.getHybrid().getEmbedder(), is(equalTo("default")));
}

@Test
void toStringWithHybridAndOtherParameters() {
IndexSearchRequest classToTest =
IndexSearchRequest.builder()
.q("This is a Test")
.offset(200)
.limit(900)
.hybrid(
Hybrid.builder()
.semanticRatio(0.7)
.embedder("custom-embedder")
.build())
.build();

String expected =
"{\"q\":\"This is a Test\",\"hybrid\":{\"semanticRatio\":0.7,\"embedder\":\"custom-embedder\"},\"offset\":200,\"limit\":900}";
assertThat(classToTest.toString(), is(equalTo(expected)));
}

@Test
void toStringWithHybridOnlyEmbedder() {
IndexSearchRequest classToTest =
new IndexSearchRequest("someIndexUuid")
.setQuery("This is a Test")
.setHybrid(Hybrid.builder().embedder("default").build());

String expected = "{\"q\":\"This is a Test\",\"hybrid\":{\"embedder\":\"default\"}}";
assertThat(classToTest.toString(), is(equalTo(expected)));
}
}