13.3.4. Requêtes de facette
Exemple 13.50. Recherche Hibernate Search sur Amazon
QueryBuilder et FullTextQuery sont le point d'entrée dans l'API de facette. Le premier crée des requêtes de facettes et le dernier accède à la classe FacetManager. Le FacetManager applique des requêtes de facette sur une requête et sélectionne des facettes ajoutées à une requête existante pour affiner les résultats de la recherche. Les exemples utilisent l'entité Cd tel que démontré dans Exemple 13.51, « Entité Cd »:
Figure 13.1. Recherche Hibernate Search sur Amazon
Exemple 13.51. Entité Cd
13.3.4.1. Création d'une requête de facette Copier lienLien copié sur presse-papiers!
FacetingRequest. Deux types de requête de facette sont pour l'instant pris en charge. Le premier type s'intitule « discrete faceting » (requête de facette discrète) et le second « range faceting » (requête de facette de gamme). Dans le cas d'une requête de facette discrète, vous devez spécifier le champ d'index sur lequel vous souhaitez effectuer la requête de facette (catégoriser) et les options de requête de facette à appliquer. Vous trouverez un exemple de requête de facette discrète dans Exemple 13.52, « Création d'une requête de facette discrète »:
Exemple 13.52. Création d'une requête de facette discrète
Facet sera créée pour chaque valeur discrète pour le champ indexé label. L'instance Facet enregistrera la valeur de champ réelle en incluant la fréquence à laquelle cette valeur de champ apparaît dans les résultats de requête initiaux. orderedBy, includeZeroCounts et maxFacetCount sont des paramètres facultatifs pouvant être appliqués sur toute requête de facette. orderedBy permet de spécifier l'ordre dans lequel les facettes créées seront renvoyées. La valeur par défaut est FacetSortOrder.COUNT_DESC, mais vous pouvez également trier par valeur de champ ou par l'ordre dans lequel les gammes sont spécifiées. La méthode includeZeroCount détermine si les facettes avec un résultat de 0 seront incluses dans le résultat (elles le seront par défaut) et la méthode maxFacetCount vous permet de limiter le nombre maximal de facettes renvoyées.
Note
String, Date ou un sous-type des valeurs Number et null doivent être évitées. De plus, la propriété doit être indexée avec Analyze.NO et en cas de propriété numérique la classe @NumericField doit être spécifiée.
below et above ne peuvent être spécifiées qu'une fois, mais vous pouvez spécifier autant de from - to que vous le souhaitez. Pour chaque limite de gamme, vous pouvez également spécifier avec excludeLimit si elle est incluse dans la gamme ou non.
Exemple 13.53. Création d'une requête de facette de gamme