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