Browse Source

[LTR] FieldValueExtrator - Checking if fetched values is empty. (#104314)

* Checking if fetched values is empty.
* Update docs/changelog/104314.yaml
Aurélien FOUCRET 1 year ago
parent
commit
6106da5d40

+ 5 - 0
docs/changelog/104314.yaml

@@ -0,0 +1,5 @@
+pr: 104314
+summary: "[LTR] `FieldValueExtrator` - Checking if fetched values is empty"
+area: Machine Learning
+type: bug
+issues: []

+ 4 - 1
x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/inference/ltr/FieldValueFeatureExtractor.java

@@ -53,7 +53,10 @@ public class FieldValueFeatureExtractor implements FeatureExtractor {
     public void addFeatures(Map<String, Object> featureMap, int docId) throws IOException {
         Source source = sourceLookup.getSource(this.segmentContext, docId);
         for (FieldValueFetcher vf : this.valueFetcherList) {
-            featureMap.put(vf.fieldName(), vf.valueFetcher().fetchValues(source, docId, new ArrayList<>()).get(0));
+            List<Object> values = vf.valueFetcher().fetchValues(source, docId, new ArrayList<>());
+            if (values.isEmpty() == false) {
+                featureMap.put(vf.fieldName(), values.get(0));
+            }
         }
     }