@@ -55,7 +55,6 @@ public final class LinearRetrieverBuilder extends CompoundRetrieverBuilder<Linea
5555
5656 private final float [] weights ;
5757 private final ScoreNormalizer [] normalizers ;
58- private final Float minScore ;
5958
6059 @ SuppressWarnings ("unchecked" )
6160 static final ConstructingObjectParser <LinearRetrieverBuilder , RetrieverParserContext > PARSER = new ConstructingObjectParser <>(
@@ -64,7 +63,6 @@ public final class LinearRetrieverBuilder extends CompoundRetrieverBuilder<Linea
6463 args -> {
6564 List <LinearRetrieverComponent > retrieverComponents = (List <LinearRetrieverComponent >) args [0 ];
6665 int rankWindowSize = args [1 ] == null ? RankBuilder .DEFAULT_RANK_WINDOW_SIZE : (int ) args [1 ];
67- Float minScore = (Float ) args [2 ];
6866 List <RetrieverSource > innerRetrievers = new ArrayList <>();
6967 float [] weights = new float [retrieverComponents .size ()];
7068 ScoreNormalizer [] normalizers = new ScoreNormalizer [retrieverComponents .size ()];
@@ -75,14 +73,13 @@ public final class LinearRetrieverBuilder extends CompoundRetrieverBuilder<Linea
7573 normalizers [index ] = component .normalizer ;
7674 index ++;
7775 }
78- return new LinearRetrieverBuilder (innerRetrievers , rankWindowSize , weights , normalizers , minScore );
76+ return new LinearRetrieverBuilder (innerRetrievers , rankWindowSize , weights , normalizers );
7977 }
8078 );
8179
8280 static {
8381 PARSER .declareObjectArray (constructorArg (), LinearRetrieverComponent ::fromXContent , RETRIEVERS_FIELD );
8482 PARSER .declareInt (optionalConstructorArg (), RANK_WINDOW_SIZE_FIELD );
85- PARSER .declareFloat (optionalConstructorArg (), MIN_SCORE_FIELD );
8683 RetrieverBuilder .declareBaseParserFields (PARSER );
8784 }
8885
@@ -113,17 +110,15 @@ public static LinearRetrieverBuilder fromXContent(XContentParser parser, Retriev
113110 innerRetrievers ,
114111 rankWindowSize ,
115112 getDefaultWeight (innerRetrievers .size ()),
116- getDefaultNormalizers (innerRetrievers .size ()),
117- null
113+ getDefaultNormalizers (innerRetrievers .size ())
118114 );
119115 }
120116
121117 public LinearRetrieverBuilder (
122118 List <RetrieverSource > innerRetrievers ,
123119 int rankWindowSize ,
124120 float [] weights ,
125- ScoreNormalizer [] normalizers ,
126- Float minScore
121+ ScoreNormalizer [] normalizers
127122 ) {
128123 super (innerRetrievers , rankWindowSize );
129124 if (weights .length != innerRetrievers .size ()) {
@@ -132,19 +127,13 @@ public LinearRetrieverBuilder(
132127 if (normalizers .length != innerRetrievers .size ()) {
133128 throw new IllegalArgumentException ("The number of normalizers must match the number of inner retrievers" );
134129 }
135- if (minScore != null && minScore < 0.0f ) {
136- throw new IllegalArgumentException (
137- "[" + MIN_SCORE_FIELD .getPreferredName () + "] must be greater than or equal to 0, was: " + minScore
138- );
139- }
140130 this .weights = weights ;
141131 this .normalizers = normalizers ;
142- this .minScore = minScore ;
143132 }
144133
145134 @ Override
146135 protected LinearRetrieverBuilder clone (List <RetrieverSource > newChildRetrievers , List <QueryBuilder > newPreFilterQueryBuilders ) {
147- LinearRetrieverBuilder clone = new LinearRetrieverBuilder (newChildRetrievers , rankWindowSize , weights , normalizers , minScore );
136+ LinearRetrieverBuilder clone = new LinearRetrieverBuilder (newChildRetrievers , rankWindowSize , weights , normalizers );
148137 clone .preFilterQueryBuilders = newPreFilterQueryBuilders ;
149138 clone .retrieverName = retrieverName ;
150139 return clone ;
@@ -194,6 +183,7 @@ protected RankDoc[] combineInnerRetrieverResults(List<ScoreDoc[]> rankResults, b
194183 Arrays .sort (sortedResults );
195184
196185 final LinearRankDoc [] resultsToConsider ;
186+ Float minScore = minScore ();
197187 if (minScore != null ) { // Check if minScore was actually set
198188 List <LinearRankDoc > filteredList = new ArrayList <>(sortedResults .length );
199189 for (LinearRankDoc doc : sortedResults ) {
@@ -235,6 +225,7 @@ public void doToXContent(XContentBuilder builder, Params params) throws IOExcept
235225 builder .endArray ();
236226 }
237227 builder .field (RANK_WINDOW_SIZE_FIELD .getPreferredName (), rankWindowSize );
228+ Float minScore = minScore ();
238229 if (minScore != null ) {
239230 builder .field (MIN_SCORE_FIELD .getPreferredName (), minScore );
240231 }
0 commit comments