Skip to content

Commit 7433023

Browse files
committed
Resolved comments to have ahelper method and the test case to use it
1 parent 2010f3a commit 7433023

File tree

1 file changed

+115
-18
lines changed

1 file changed

+115
-18
lines changed

x-pack/plugin/rank-rrf/src/test/java/org/elasticsearch/xpack/rank/rrf/RRFRetrieverBuilderParsingTests.java

Lines changed: 115 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,28 @@ protected NamedXContentRegistry xContentRegistry() {
107107
return new NamedXContentRegistry(entries);
108108
}
109109

110+
private void checkRRFRetrieverParsing(String restContent) throws IOException {
111+
SearchUsageHolder searchUsageHolder = new UsageService().getSearchUsageHolder();
112+
try (XContentParser jsonParser = createParser(JsonXContent.jsonXContent, restContent)) {
113+
SearchSourceBuilder source = new SearchSourceBuilder().parseXContent(jsonParser, true, searchUsageHolder, nf -> true);
114+
assertThat(source.retriever(), instanceOf(RRFRetrieverBuilder.class));
115+
RRFRetrieverBuilder parsed = (RRFRetrieverBuilder) source.retriever();
116+
assertThat(parsed.minScore(), equalTo(20f));
117+
assertThat(parsed.retrieverName(), equalTo("foo_rrf"));
118+
try (XContentParser parseSerialized = createParser(JsonXContent.jsonXContent, Strings.toString(source))) {
119+
SearchSourceBuilder deserializedSource = new SearchSourceBuilder().parseXContent(
120+
parseSerialized,
121+
true,
122+
searchUsageHolder,
123+
nf -> true
124+
);
125+
assertThat(deserializedSource.retriever(), instanceOf(RRFRetrieverBuilder.class));
126+
RRFRetrieverBuilder deserialized = (RRFRetrieverBuilder) source.retriever();
127+
assertThat(parsed, equalTo(deserialized));
128+
}
129+
}
130+
}
131+
110132
public void testRRFRetrieverParsing() throws IOException {
111133
String restContent = """
112134
{
@@ -134,24 +156,99 @@ public void testRRFRetrieverParsing() throws IOException {
134156
}
135157
}
136158
""";
137-
SearchUsageHolder searchUsageHolder = new UsageService().getSearchUsageHolder();
138-
try (XContentParser jsonParser = createParser(JsonXContent.jsonXContent, restContent)) {
139-
SearchSourceBuilder source = new SearchSourceBuilder().parseXContent(jsonParser, true, searchUsageHolder, nf -> true);
140-
assertThat(source.retriever(), instanceOf(RRFRetrieverBuilder.class));
141-
RRFRetrieverBuilder parsed = (RRFRetrieverBuilder) source.retriever();
142-
assertThat(parsed.minScore(), equalTo(20f));
143-
assertThat(parsed.retrieverName(), equalTo("foo_rrf"));
144-
try (XContentParser parseSerialized = createParser(JsonXContent.jsonXContent, Strings.toString(source))) {
145-
SearchSourceBuilder deserializedSource = new SearchSourceBuilder().parseXContent(
146-
parseSerialized,
147-
true,
148-
searchUsageHolder,
149-
nf -> true
150-
);
151-
assertThat(deserializedSource.retriever(), instanceOf(RRFRetrieverBuilder.class));
152-
RRFRetrieverBuilder deserialized = (RRFRetrieverBuilder) source.retriever();
153-
assertThat(parsed, equalTo(deserialized));
159+
checkRRFRetrieverParsing(restContent);
160+
}
161+
162+
public void testRRFRetrieverParsingWithWeights() throws IOException {
163+
String restContent = """
164+
{
165+
"retriever": {
166+
"rrf": {
167+
"retrievers": [
168+
{
169+
"retriever": {
170+
"test": {
171+
"value": "first"
172+
}
173+
},
174+
"weight": 2.0
175+
},
176+
{
177+
"retriever": {
178+
"test": {
179+
"value": "second"
180+
}
181+
},
182+
"weight": 0.5
183+
}
184+
],
185+
"rank_window_size": 100,
186+
"rank_constant": 10,
187+
"min_score": 20.0,
188+
"_name": "foo_rrf"
189+
}
190+
}
154191
}
155-
}
192+
""";
193+
checkRRFRetrieverParsing(restContent);
194+
}
195+
196+
public void testRRFRetrieverParsingWithMixedWeights() throws IOException {
197+
String restContent = """
198+
{
199+
"retriever": {
200+
"rrf": {
201+
"retrievers": [
202+
{
203+
"test": {
204+
"value": "no_weight"
205+
}
206+
},
207+
{
208+
"retriever": {
209+
"test": {
210+
"value": "with_weight"
211+
}
212+
},
213+
"weight": 1.5
214+
}
215+
],
216+
"rank_window_size": 100,
217+
"rank_constant": 10,
218+
"min_score": 20.0,
219+
"_name": "foo_rrf"
220+
}
221+
}
222+
}
223+
""";
224+
checkRRFRetrieverParsing(restContent);
225+
}
226+
227+
public void testRRFRetrieverParsingWithDefaultWeights() throws IOException {
228+
String restContent = """
229+
{
230+
"retriever": {
231+
"rrf": {
232+
"retrievers": [
233+
{
234+
"test": {
235+
"value": "first"
236+
}
237+
},
238+
{
239+
"test": {
240+
"value": "second"
241+
}
242+
}
243+
],
244+
"rank_window_size": 100,
245+
"rank_constant": 10,
246+
"min_score": 20.0,
247+
"_name": "foo_rrf"
248+
}
249+
}
250+
}
251+
""";
252+
checkRRFRetrieverParsing(restContent);
156253
}
157254
}

0 commit comments

Comments
 (0)