Skip to content

Commit fbd8ccc

Browse files
committed
Support "Hybrid" parameter in IndexSearchRequest and add tests for it
1 parent 45861af commit fbd8ccc

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

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

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

3+
import com.meilisearch.sdk.model.Hybrid;
34
import com.meilisearch.sdk.model.MatchingStrategy;
45
import lombok.*;
56
import lombok.experimental.Accessors;
@@ -38,6 +39,7 @@ public class IndexSearchRequest {
3839
private FederationOptions federationOptions;
3940
protected String[] locales;
4041
protected String distinct;
42+
protected Hybrid hybrid;
4143
protected Boolean retrieveVectors;
4244

4345
/**
@@ -110,6 +112,10 @@ public String toString() {
110112
.putOpt("distinct", this.distinct)
111113
.putOpt("retrieveVectors", this.retrieveVectors);
112114

115+
if (this.hybrid != null) {
116+
jsonObject.put("hybrid", this.hybrid.toJSONObject());
117+
}
118+
113119
return jsonObject.toString();
114120
}
115121
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.meilisearch.sdk;
2+
3+
import com.meilisearch.sdk.model.Hybrid;
4+
import org.junit.jupiter.api.Test;
5+
6+
import static org.hamcrest.MatcherAssert.assertThat;
7+
import static org.hamcrest.Matchers.equalTo;
8+
import static org.hamcrest.Matchers.is;
9+
10+
class IndexIndexSearchRequestTest {
11+
@Test
12+
void toStringWithHybridUsingBuilder() {
13+
IndexSearchRequest classToTest =
14+
IndexSearchRequest.builder()
15+
.q("This is a Test")
16+
.hybrid(Hybrid.builder().semanticRatio(0.5).embedder("default").build())
17+
.build();
18+
19+
String expected =
20+
"{\"q\":\"This is a Test\",\"hybrid\":{\"semanticRatio\":0.5,\"embedder\":\"default\"}}";
21+
assertThat(classToTest.toString(), is(equalTo(expected)));
22+
23+
// Verify getters
24+
assertThat(classToTest.getHybrid().getSemanticRatio(), is(equalTo(0.5)));
25+
assertThat(classToTest.getHybrid().getEmbedder(), is(equalTo("default")));
26+
}
27+
28+
@Test
29+
void toStringWithHybridAndOtherParameters() {
30+
IndexSearchRequest classToTest =
31+
IndexSearchRequest.builder()
32+
.q("This is a Test")
33+
.offset(200)
34+
.limit(900)
35+
.hybrid(
36+
Hybrid.builder()
37+
.semanticRatio(0.7)
38+
.embedder("custom-embedder")
39+
.build())
40+
.build();
41+
42+
String expected =
43+
"{\"q\":\"This is a Test\",\"hybrid\":{\"semanticRatio\":0.7,\"embedder\":\"custom-embedder\"},\"offset\":200,\"limit\":900}";
44+
assertThat(classToTest.toString(), is(equalTo(expected)));
45+
}
46+
47+
@Test
48+
void toStringWithHybridOnlyEmbedder() {
49+
IndexSearchRequest classToTest =
50+
new IndexSearchRequest("someIndexUuid")
51+
.setQuery("This is a Test")
52+
.setHybrid(Hybrid.builder().embedder("default").build());
53+
54+
String expected = "{\"q\":\"This is a Test\",\"hybrid\":{\"embedder\":\"default\"}}";
55+
assertThat(classToTest.toString(), is(equalTo(expected)));
56+
}
57+
}

0 commit comments

Comments
 (0)