Comment fait on pour récupérer la valeur d'une propriété d'un document dans un script ?
J'ai des documents indexés :
personne{
nom,
prenom,
dateNaissance}
Je passe par un ScriptPlugin pour customiser le scoring de recherche d'un document.
Et j'ai besoin de comparer le test recherché (pour le nom par exemple) et le nom du document trouvé.
Comment accéder à la valeur d'une propriété du document trouvé ?
@Override
public Function<Map<String, Object>, SearchScript> compile(String scriptName, String scriptSource, Map<String, String> params) {
System.out.println(scriptName);
System.out.println(scriptSource);
// we use the script "source" as the script identifier
if ("pure_df".equals(scriptSource)) {
return p -> new SearchScript() {
private List<String> nomsQuery;
private String dateNaissQuery;
{
if (p.containsKey("nomsQuery") == false) {
throw new IllegalArgumentException("Missing parameter [nomsQuery]");
}
if (p.containsKey("dateNaissQuery") == false) {
throw new IllegalArgumentException("Missing parameter [dateNaissQuery]");
}
dateNaissQuery = p.get("dateNaissQuery").toString();
nomsQuery = new ArrayList<String>(Arrays.asList(p.get("nomsQuery").toString().split(",")));
}
@Override
public LeafSearchScript getLeafSearchScript(LeafReaderContext context) throws IOException {
Terms docValues = context.reader().fields().terms("nom");
System.out.println(" docValues = " + docValues);
return new LeafSearchScript() {
@Override
public void setNextAggregationValue(Object value) {
// TODO Auto-generated method stub
LeafSearchScript.super.setNextAggregationValue(value);
}
@Override
public void setNextVar(String field, Object value) {
// TODO Auto-generated method stub
LeafSearchScript.super.setNextVar(field, value);
}
@Override
public double runAsDouble() {
System.out.println("runAsDouble");
return 0;
}
};
}
@Override
public boolean needsScores() {
return false;
}
};
}
throw new IllegalArgumentException("Unknown script name " + scriptSource);
}```