13.6.2. Utilisation d'un IndexReader


Les requêtes dans Lucene sont exécutées sur un IndexReader. Hibernate Search peut effectuer une mise en cache des lecteurs d'index pour maximiser la performance, ou pour fournir d'autres stratégies efficaces pour récupérer un IndexReader mis à jour en minimisant les opérations E/S. Votre code peut accéder ces ressources mises en cache, mais il existe plusieurs pré-requis.

Exemple 13.66. Accès à un IndexReader

IndexReader reader = searchFactory.getIndexReaderAccessor().open(Order.class);
try {
   //perform read-only operations on the reader
}
finally {
   searchFactory.getIndexReaderAccessor().close(reader);
}
Dans cet exemple, la SearchFactory détermine les index requis pour effectuer une demande de cette entité (stratégie de partitionnement). L'utilisation de la ReaderProvider configurée sur chaque index renvoie un composant IndexReader au-dessus de tous les index impliqués. Cette IndexReader étant partitionné pour plusieurs clients, vous devez adhérer aux règles suivantes :
  • Ne jamais appeler indexReader.close(), mais utiliser plutôt readerProvider.closeReader(reader) si nécessaire, de préférence dans un bloc finally.
  • Ne pas utiliser IndexReader pour des modifications (il s'agit d'une IndexReader : toute modification entraînera une exception).
À part ces règles, vous pouvez utiliser IndexReader librement, particulièrement pour effectuer des requêtes Lucene natives. L'utilisation des IndexReader partagés rendra la plupart des requêtes plus efficaces que si elles étaient ouvertes directement à partir du filesystem par exemple.
À la place de la méthode open(Class... types), vous pouvez utiliser open(String... indexNames), une méthode vous permettant de passer dans un ou plusieurs noms d'index. Cette stratégie vous permet également de sélectionner un sous-ensemble d'index pour chaque type indexé si le partitionnement est utilisé.

Exemple 13.67. Accéder à une IndexReader by index names

IndexReader reader = searchFactory.getIndexReaderAccessor().open("Products.1", "Products.3");
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.