3 votes

Calcul du pourcentage sur la facette de Solr pour chaque seau

Dans solr, je ne suis pas en mesure de calculer le pourcentage de chaque seau.

Lorsque je fais des facettes en utilisant Solr avec mes données, j'ai besoin de voir le pourcentage de chaque seau en fonction de son seau parent.

Disons que nous avons des données à facettes comme suit

{
    "facets": {
        "top_genres": {
            "buckets": [
                {
                    "val": "Fantasy",
                    "count": 1000,
                    "top_authors": {
                        "buckets": [
                            {
                                "val": "Mercedes Lackey",
                                "count": 500
                            },
                            {
                                "val": "Piers Anthony",
                                "count": 500
                            }
                        ]
                    }
                },
                {
                    "val": "Mystery",
                    "count": 1000,
                    "top_authors": {
                        "buckets": [
                            {
                                "val": "James Patterson",
                                "count": 250
                            },
                            {
                                "val": "Patricia Cornwell",
                                "count": 750
                            }
                        ]
                    }
                }
            ]
        }
    }
}

Puis-je obtenir le pourcentage de chaque seau comme suit,

{
    "facets": {
        "top_genres": {
            "buckets": [
                {
                    "val": "Fantasy",
                    "count": 1000,
                    "top_authors": {
                        "buckets": [
                            {
                                "val": "Mercedes Lackey",
                                "count": 500,
                                "p":50 // percentage distribution
                            },
                            {
                                "val": "Piers Anthony",
                                "count": 500
                                "p":50
                            }
                        ]
                    }
                },
                {
                    "val": "Mystery",
                    "count": 1000,
                    "top_authors": {
                        "buckets": [
                            {
                                "val": "James Patterson",
                                "count": 250,
                                "p":25
                            },
                            {
                                "val": "Patricia Cornwell",
                                "count": 750,
                                "p":75
                            }
                        ]
                    }
                }
            ]
        }
    }
}

J'utilise Solr 7.2. Je vois quelques fonctions comme avg, sum etc. Mais je n'arrive pas à obtenir le pourcentage.

2voto

Mysterion Points 1263

Il n'y a aucun moyen de le faire en utilisant la fonctionnalité intégrée. Ce que je suggère, c'est de le faire du côté client - par exemple, prenez cette réponse JSON, analysez le champ count et calculez le pourcentage comme vous le souhaitez.

L'autre option consisterait à écrire une version personnalisée de Solr Composant qui serait inclus dans la chaîne de composants dans solrconfig.xml. Cela vous donnerait accès à la réponse alter. Cependant, cela nécessiterait de conserver ce jar personnalisé lors des mises à jour/migrations de Solr lui-même et bien d'autres difficultés. Pour cette tâche simple, je recommande d'utiliser la première approche.

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