5 votes

Comment obtenir des résultats en fonction de la répartition ?

Existe-t-il un moyen dans Solr d'obtenir des résultats selon une certaine distribution de l'un des champs indexés ?

Par exemple, imaginons que j'ai un catalogue de livres avec des champs synopsis , publication_year y genre .

Je voudrais construire une requête qui renvoie les résultats les plus pertinents en fonction de synopsis en favorisant les livres les plus récemment publiés. Cependant, dans les résultats finaux (disons 1000), je voudrais que le genre soit réparti aussi étroitement que possible selon une distribution donnée. Par exemple : 50% Science-Fiction, 25% Non-Fiction, 10% Politique et ainsi de suite

Je sais que je pourrais obtenir un grand ensemble de résultats et faire une sorte d'échantillonnage réservoir pondéré pour obtenir les 1000 derniers livres en dehors de solr, mais je cherche une solution qui serait uniquement solr.

Est-ce possible et si oui, comment ?

0voto

MatsLindh Points 5682

Bien que vous ne soyez pas en mesure de plugger votre distribution, vous pouvez utiliser Réduire et développer ou Groupement de résultats pour obtenir un nombre n de résultats pour chaque genre. Vous ignorez ensuite tout résultat retourné au-dessus de votre seuil pour ce groupe.

Vous devrez fixer le nombre de documents pour chaque groupe à la taille maximale du godet dans votre distribution du nombre total d'occurrences, c'est-à-dire 500 dans votre exemple ci-dessus. Cela peut vous donner un très grand ensemble de documents avec lesquels travailler, donc j'essaierais de garder le nombre total retourné par genre plutôt petit au début au moins.

Il existe peut-être un moyen de rendre la taille des groupes plus dynamique en étendant l'une ou l'autre des deux fonctionnalités ci-dessus et en ajoutant votre propre code pour limiter le nombre de documents collectés par genre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X