Donc, mon application Rails utilisant elasticsearch (avec searchkick), fonctionne très bien avec la fonction de commande _geo_distance, mais j'ai besoin de faire une commande plus complexe qui inclut l'emplacement ET une tentative pour promouvoir un nom de l'entreprise exacte chaîne de correspondance. Par exemple, si je fais une requête et qu'il y a 10 résultats de distance ascendante, mais le résultat # 5 est aussi une correspondance de chaîne exacte sur le nom de l'entreprise dans l'enregistrement, je voudrais promouvoir/élever cela à la Position n ° 1 (essentiellement en remplaçant le tri à distance pour cet enregistrement).Rails elasticsearch _geo_distance et scoring/tri personnalisé
Il y a deux façons que je peux voir pour essayer de résoudre ce problème, mais je rencontre des problèmes avec les deux. Tout d'abord, serait de le faire sur la requête initiale, afin que elasticsearch gère le travail. Deuxièmement, serait de faire un certain type de re-tri post-processus sur le résultat retourné par elasticsearch pour rechercher une correspondance exacte et ré-ordonner si nécessaire. Le problème avec la première méthode est que les mécanismes de scoring intégrés semblent se déplacer complètement à distance en invoquant _geo_distance, me laissant me demander comment mélanger les fonctions de scoring personnalisées avec l'emplacement. Le problème avec la seconde méthode est que les résultats de la recherche retournés sont un type personnalisé de l'objet SearchKick qui ne semble pas aimer les mécanismes de tri de tableau ou de hachage normaux pour un post-traitement.
Existe-t-il un moyen de faire quelque chose avant ou après une requête pour promouvoir un document dans les résultats de cette manière?
Merci.
Merci pour votre réponse, mais je ne suis toujours pas clair sur la façon dont cette notation fonctionnerait avec les scores de distance Geo/résultats. Les résultats Geo sont triés par distance, ce qui semble modifier les fonctions de notation normales. Dans un tel cas, une augmentation du "score" conduirait à une mesure de distance incorrecte. Comment puis-je conserver les mesures Geo, et toujours promouvoir le document? – kayatela
Je suppose qu'une autre façon d'aborder cela serait d'avoir les résultats triés par _score (pas de géo), mais aussi d'inclure les données _geo_distance dans les résultats retournés. Mais je n'ai pas compris comment faire ça non plus. – kayatela
vérifier mon édition ci-dessus, je vous ai donné un exemple. – hxuanji