13.3.3. Filters
Lucene Apache possède une fonctionnalité importante vous permettant de filtrer les résultats de votre requête selon un procédé de filtrage pesonnalisé. C'est une façon très efficace d'appliquer des restrictions de données additionnelles, notamment car les filtres peuvent être mis en cache et réutilisés. Voici quelques cas d'utilisation :
- sécurité
- données temporelles (par exemple, afficher uniquement les données du mois précédent)
- filtre de population (par exemple, recherche limitée à une catégorie donnée)
13.3.3.1. Utilisation des filtres dans un environnement partitionné Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
Pour exécuter des requêtes sur un sous-ensemble des partitions disponibles dans un environnement partitionné, veuillez suivre les deux étapes suivantes :
Procédure 13.1. Requête de sous-ensemble de partitions d'index
- Créer une stratégie de partitionnement qui sélectionne un sous-ensemble de
IndexManagers selon la configuration du filtre. - Activer le filtre au moment de la requête.
Exemple 13.49. Requête de sous-ensemble de partitions d'index
Dans l'exemple ci-dessous, la requête est effectuée pour une partition de client spécifique si le filtre
customer (client) est activé.
Dans cet exemple, si le filtre intitulé
customer est présent, seule la partition consacrée à ce client sera requise, sinon, toutes les partitions seront retournées. Une stratégie de partitionnement donnée peut réagir à un ou plusieurs filtres et dépendra de ces paramètres.
La deuxième étape sert simplement à activer le filtre au moment de la requête. Le filtre peut être standard (tel que défini dans Section 13.3.3, « Filters ») et filtrer les résultats Lucene suite à la requête, ou vous pouvez utiliser un filtre spécial qui ne sera appliqué que pour la stratégie de partitionnement et ignoré pour le reste de la requête. Pour utiliser cette fonction, veuillez spécifier la classe
ShardSensitiveOnlyFilter lorsque vous indiquez votre filtre.
Veuillez noter qu'en utilisant le filtre
ShardSensitiveOnlyFilter, vous n'aurez pas besoin de mettre en place un filtre Lucene. L'utilisation de filtres et d'une stratégie de partitionnement réagissant à ces filtres est recommandée pour accélérer les requêtes dans un environnement partitionné.