2008-12-05 7 views

Répondre

0

Il n'est pas clair si vous voulez un vrai comportement de type SQL "GROUP BY", ou simplement un "ORDER BY" comportement. Il n'y a rien de tel que les fonctions d'agrégation dans Lucene, donc "GROUP BY" devrait être implémenté dans votre application, en plus de Lucene.

Cependant, le tri des champs est assez facile. Assurez-vous que le champ souhaité est indexé et créez un objet org.apache.lucene.search.Sort à transmettre dans le cadre des critères de recherche; la plupart des méthodes de recherche ont une surcharge qui accepte une instance Sort.

Si vous deviez mettre en œuvre votre propre « GROUP BY » logique, ayant les résultats affichés par ordre « » les champs appropriés est une première étape utile.

1

Lucene a quelques bibliothèques suplimentary, l'une étant ce dont vous avez besoin: Grouping

Vous ne pouvez regrouper par des valeurs de requête de fonction, ni par des requêtes arbitraires (comme Solr fait), mais vous pouvez par champ à valeur unique.

Quelque chose de similaire (recherche à facettes) sera mis en œuvre Lucene 4.0

+0

lien est rompu. Peut-être que le nouvel emplacement est le suivant: http://lucene.apache.org/core/old_versioned_docs/versions/3_2_0/api/contrib-grouping/org/apache/lucene/search/grouping/package-summary.html –

+0

Oui, ty . Lien brisé mis à jour. – mihaicc

2

Lucene 3.4 prend désormais en charge la recherche à facettes. Lors de l'indexation, vous spécifiez quelque chose de supplémentaire et au moment de la recherche, vous effectuez une recherche par requête et par groupe.

pour les 3 prochaines docs, que vous indexez avec ces groupes

doc1: monday, 1pm, 3min  
doc2: monday, 1pm, 4min  
doc3: monday, 2pm, 3min 

vous pouvez rechercher uniquement pour le premier param: lundi, et obtenir la valeur: 3, ou vous pouvez explorer et rechercher lundi/13 heures et la valeur obtenir: 2 ou profondeur ensemble de la recherche 3 et obtenir

monday :3 
monday/1pm :2 
monday/1pm/3min :1 
monday/1pm/4min :1 
monday/2pm :1 
monday/2pm/3min :1 

est ici le source sample:

Mais la plupart o f tous lu faceted search

Questions connexes