@@ -265,7 +265,7 @@ protected RetrieverBuilder doRewrite(QueryRewriteContext ctx) {
265265 );
266266 }
267267
268- List <RetrieverBuilder > fieldsInnerRetrievers = MultiFieldsInnerRetrieverUtils .generateInnerRetrievers (
268+ List <RetrieverSource > fieldsInnerRetrievers = MultiFieldsInnerRetrieverUtils .generateInnerRetrievers (
269269 fields ,
270270 query ,
271271 localIndicesMetadata .values (),
@@ -286,20 +286,13 @@ protected RetrieverBuilder doRewrite(QueryRewriteContext ctx) {
286286 );
287287 }
288288 }
289- );
289+ ). stream (). map ( RetrieverSource :: from ). toList () ;
290290
291291 if (fieldsInnerRetrievers .isEmpty () == false ) {
292292 // TODO: This is a incomplete solution as it does not address other incomplete copy issues
293293 // (such as dropping the retriever name and min score)
294- int size = fieldsInnerRetrievers .size ();
295- List <RetrieverSource > sources = new ArrayList <>(size );
296- float [] weights = new float [size ];
297- Arrays .fill (weights , RRFRetrieverComponent .DEFAULT_WEIGHT );
298- for (int i = 0 ; i < size ; i ++) {
299- sources .add (RetrieverSource .from (fieldsInnerRetrievers .get (i )));
300- weights [i ] = RRFRetrieverComponent .DEFAULT_WEIGHT ;
301- }
302- rewritten = new RRFRetrieverBuilder (sources , null , null , rankWindowSize , rankConstant , weights );
294+ float [] weights = createDefaultWeights (fieldsInnerRetrievers );
295+ rewritten = new RRFRetrieverBuilder (fieldsInnerRetrievers , null , null , rankWindowSize , rankConstant , weights );
303296 rewritten .getPreFilterQueryBuilders ().addAll (preFilterQueryBuilders );
304297 } else {
305298 // Inner retriever list can be empty when using an index wildcard pattern that doesn't match any indices
0 commit comments