2011-04-18 5 views
1

J'utilise apache-solr-1.4.1 et jdk1.6.0_14.Apache SOLR recherche par catégorie

J'ai le scénario suivant. J'ai 3 catégories de données indexées dans SOLR c.-à-d. VILLES, ÉTATS, PAYS. Lorsque je interroge des données de SOLR j'ai besoin du résultat de recherche de SOLR basé sur les critères suivants:

Dans une seule requête à SOLR j'ai besoin des données récupérées de SOLR groupées par chaque catégorie avec un nombre de résultats prédéfini pour chaque catégorie.

Comment puis-je spécifier cette condition dans SOLR?

J'ai essayé d'utiliser la fonctionnalité SOLR Field Collapsing, mais je n'arrive pas à obtenir la sortie désirée de SOLR.

Veuillez nous suggérer.

Répondre

3

Ma solution n'est pas exactement ce que vous avez demandé, mais c'est ce que je pense de ce que SOLR fait de mieux, à savoir la recherche en texte intégral. Au lieu de regrouper les résultats par «catégorie», je vous suggère de classer les résultats par score de pertinence, mais aussi de fournir un nombre de facettes pour les valeurs des catégories. Dans mon expérience, les utilisateurs s'attendent à ce qu'une "recherche" se comporte comme Google, avec les meilleures correspondances au sommet. Déviation forme cette norme confond l'utilisateur dans la plupart des cas. Si vous voulez exactement ce que vous avez demandé (résultats réels regroupés par catégorie) alors vous pouvez utiliser une base de données relationnelle et faire un group_by ou écrire un function query personnalisé avec SOLR (je ne peux pas le conseiller comme je ne l'ai jamais fait).

Plus d'informations: indexez les données avec les champs appropriés, par ex. nom, population, etc. Mais ajoutez également un champ appelé "catégorie", qui aurait une valeur de VILLES, ÉTATS ou PAYS. Effectuez ensuite une recherche SOLR standard, qui renverra les résultats par ordre de pertinence, c'est-à-dire les meilleures correspondances en haut. Dans le cadre de la demande, vous pouvez spécifier un facet.field=category, qui renverra les comptes pour les résultats de la recherche pour chacune des catégories données (dans la section des résultats "facettes"). Dans l'interface utilisateur, vous pouvez ensuite créer des liens pour chaque facette de catégorie qui effectue la recherche d'origine plus &fq=category:CITIES, etc., limitant ainsi les résultats à cette seule catégorie. Voir le facetting overview sur le wiki SOLR pour plus d'informations.

+0

Je suis d'accord avec @nickdos, vous devriez tirer parti des facettes au sein de Solr pour atteindre les résultats souhaités. –