J'utilise la fonction rord()
dans les requêtes Solr afin d'améliorer les résultats de la requête sur un champ « rang », en utilisant un quelque chose de syntaxe comme ceci:Qu'est-ce qu'une stratégie recommandée pour remplacer les requêtes de fonction ord() et rord() dans Solr?
bf=rord(cur_rank)^1.8
L'algorithme fonctionne bien, mais les récents changements dans Solr indiquent qu'utiliser ord() et rord() est un cochon de mémoire maintenant. De the changelog:
recherche et le tri se fait maintenant sur une base par segment, ce qui signifie que les entrées FieldCache utilisées pour le tri et pour les requêtes de fonction sont créés et utilisés par segments et peuvent être réutilisés pour les segments qui ne changent pas entre mises à jour d'index. Bien que généralement bénéfique, cela peut conduire à une utilisation accrue mémoire plus de 1,3 dans certains scénarios:
[...]
2) Fonction certaines requêtes telles que ord() et Rord() nécessitent une top instance FieldCache de niveau et peut donc conduire à une utilisation accrue de la mémoire. Envisager de remplacer ord() et rord() avec des alternatives, telles que la fonction requêtes basées sur ms() pour la date boosting.
Il mentionne les stratégies possibles pour fondé sur la date de traitement stimulant, mais que diriez-vous d'un certain nombre comme « rang » où le rang est un nombre compris entre 1 et le nombre total d'enregistrements?
rord() semble idéal ... d'autres stratégies?
C'est ce que nous avons fini par faire. – danieltalsky