Je suis à la recherche d'une méthode sous elasticsearch permettant de pondéré les résultats obtenu , en particulier par rapport a la distance (GeoDistanceFilter ) , et un query sur un champ.
{"users":{"user":{"analyzer":"francais","_boost":{"null_value":1.0},"properties":{"birth_date":{"type":"date","format":"dateOptionalTime","include_in_all":true},"city":{"properties":{"city_name":{"type":"string","include_in_all":true},"city_zip":{"type":"integer","include_in_all":false},"id":{"type":"integer","include_in_all":false},"location":{"type":"geo_point"}}},"id":{"type":"integer","include_in_all":false}"sports":{"properties":{"id":{"type":"integer","include_in_all":false},"name":{"type":"string","include_in_all":true},"sport_name":{"type":"string"}}}}}}}
Pour cela j'ai besoin de faire la distance avec le champ location (type:geo_point ) , ainsi qu'en fonction du nombre de match dans l'objet Sports(sport_name plus exactememnt) . Je voudrais par exemple faire une recherche en procédant par pondération en supposant que je veux que si j'ai 3 sports en commun et que la distance est de 10km , il sera plus proche des résultats que si j'ai 2 sport en commun et 10km , mais aussi , je voudrai que si il se trouve a 100km et a 5 sports en commun , soit derrière celui qui est a 10km et a seulement 1 sport en commun...
Sur quel type de query dois je m'engager ? les boost permettent-il de réaliser ceci ? (avec pour exemple boost 1 par sport , et 2 par 10 aine de km ..) ? Avez vous une suggestions ?
JE vous remercie d'avance :p !