Comment regrouper les résultats de recherche renvoyés par Lucene par des champs (similaires à ceux de SQL Server)?Comment regrouper dans les résultats de recherche Lucene?
Répondre
https://issues.apache.org/jira/browse/LUCENE-1421
il semble que vous ne pouvez pas. Il y a peut-être une solution de contournement: theres un fil ici qui décrit comment quelqu'un d'autre l'a fait: here
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.
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
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
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 –
Oui, ty . Lien brisé mis à jour. – mihaicc