Composants Lucene et aperçu
Notes
Cette fonctionnalité est disponible en NCache Entreprise ainsi que Professional éditions.
Lucene, comme nous le savons, est un moteur de recherche puissant et efficace qui fournit une vaste gamme de techniques de recherche de texte selon les besoins des utilisateurs. Lucene est bien plus que tout autre moteur de recherche de texte, car les choix proposés à l'utilisateur ne sont en aucun cas discriminés. Il dispose d'algorithmes de recherche puissants et puissants et prend en charge un large éventail de requêtes de recherche.
Les applications Lucene ont un cycle de base qui comprend principalement les premières données d'indexation sur lesquelles la recherche est effectuée, à un chemin spécifique. Les données ajoutées peuvent être sous n'importe quelle forme textuelle selon les besoins de l'utilisateur. Les données sont indexées et tokenisées, puis la recherche est effectuée sur ces jetons à l'aide de requêtes. Il s'agit d'un processus à double sens car il comprend d'abord le traitement des données, puis la recherche.
Le diagramme suivant illustre le flux de travail de base du modèle Lucene.
Composants de Lucène
Afin d'utiliser Lucene pour la recherche de texte, examinons de plus près l'API principale utilisée par Lucene. Veuillez noter qu'il ne s'agit pas d'un guide complet pour Lucene. Cependant, cela vous aidera à comprendre l'API Lucene de base et radicale.
Voici l'API de base utilisée pour créer une solution basée sur Lucene.
Annuaire: C'est la classe de base qui définit où les index sont formés.
Document: Il contient les données à indexer.
Analyseur: Pendant l'indexation des données, l'analyseur décide des critères sur la base desquels la segmentation et la recherche sont effectuées sur les données. De même, il est utilisé lors de l'interrogation de données, ce qui implique également la tokenisation.
Rédacteur d'index : Les documents créés au préalable sont passés au répertoire à l'aide de cette classe. Un indexWriter peut être ouvert à la fois.
Lecteur d'index : Chaque répertoire dans lequel les index sont créés peut avoir un ou des lecteurs ouverts qui sont responsables de la lecture des données des index.
Chercheur d'index : Le chercheur est chargé d'interroger les données par l'intermédiaire du ou des lecteurs.
Vous trouverez ci-dessous la description détaillée de ces classes :
Annuaire
Cette classe est une représentation de l'emplacement où les index Lucene sont stockés. Un répertoire doit être ouvert pour maintenir les index afin que d'autres opérations puissent être effectuées dessus.
Documents
Un document est un ensemble de des champs. Ces champs contiennent des données textuelles comme valeur contre un nom de champ. La valeur correspond aux données que vous souhaitez indexer, puis rendre consultables à l'avenir. Avec chaque champ, l'utilisateur peut spécifier s'il veut analyser cette valeur de champ ou non. Le document est essentiellement l'unité de recherche qui sera renvoyée lorsqu'un champ est recherché par rapport à un searchterm
.
Analyzer
Analyzer
comme indiqué précédemment, il a la responsabilité principale de segmenter les données en petits morceaux selon le type fourni. Il analyse essentiellement les champs des documents en jetons indexables. La manière dont les données sont analysées par l'analyseur influence la capacité de l'utilisateur à rechercher les données. Vous trouverez ci-dessous la liste des quatre analyseurs Lucene de base et les plus couramment utilisés.
Analyseur d'espaces blancs
Cet analyseur analyse les données en fonction des espaces comme son nom l'indique. De plus cet analyseur maintient la casse des mots. Il effectue la tokenisation des données en fonction de la casse qu'elles contiennent principalement.
Analyseur standard
Il analyse les données en fonction des mots vides et effectue une tokenisation sur les données en minuscules similaire à l'analyseur simple. De plus, il reconnaît les URL et les adresses e-mail et génère des jetons en conséquence. En raison de cette fonctionnalité, il est le plus couramment utilisé car il est considéré comme l'analyseur le plus intelligent.
Analyseur simple
Il indexe les données en minuscules et les divise en fonction des non-lettres. Il n'indexe pas les URL et les caractères non alphabétiques tels que les symboles ou les chiffres.
Arrêter l'analyseur
L'analyseur d'arrêt génère des jetons à partir des données en fonction des caractères non alphabétiques ainsi que des mots vides. Les mots vides sont les mots censés être ignorés lors de l'indexation, car les analyseurs les considèrent comme non pertinents pour être parcourus. De plus, l'analyseur d'arrêt n'indexe pas les URL et les caractères non alphabétiques tels que les symboles ou les chiffres.
Considérez la phrase ci-dessous :
Ceci est un tutoriel pour "DistributedLucene" à alachisoft. Com.
Analyseur d'espaces blancs | Arrêter l'analyseur | Analyseur simple | Analyseur standard |
---|---|---|---|
Ce is a tutoriel en "DistributedLucene" at alachisoft. Com. |
tutoriel lucène distribué alachisoft com |
this is a tutoriel en "lucène distribué" alachisoft com |
tutoriel lucène distribué alachisoft.com |
Rédacteur d'index
Pour ajouter le document et l'indexer, nous avons besoin d'un IndexWriter
. L'écrivain a besoin de :
Un répertoire Lucene valide : où le document doit être indexé
Analyseur : pour que le rédacteur analyse les données en fonction de celui-ci.
Writer correspond avec l'analyseur pour les données indexées puis ajoute les résultats au Directory pour le stockage des données. Précisément, l'écrivain est responsable de toutes les opérations d'écriture à effectuer correctement sur les données puis de les stocker. Il existe un ensemble d'opérations qui peuvent être effectuées sur l'enregistreur et l'enregistreur est supprimé après toutes les opérations.
Lecteur d'index
La fonctionnalité principale de Lucene est de rechercher les données ajoutées précédemment. A cet effet nous avons IndexReader
qui lit les données du répertoire. A chaque mise à jour des documents, le IndexReader
doit être réinitialisé. Vous pouvez soit créer un IndexReader
ou obtenir une instance de IndexReader
du IndexWriter
. Vous passez l'instance de répertoire au lecteur qui a tous les documents indexés.
Chercheur d'index
IndexSearcher
est l'initialisé avec l'instance de
IndexReader
qui prend la requête de l'utilisateur et recherche les données en conséquence. Une requête est une classe abstraite fournie par Lucene et est utilisée pour définir la portée et le type de recherche à effectuer. En cherchant on nous revient avec TopDocs
qui est le résultat de la recherche avec la requête.
Maintenant que la requête est créée, vous analysez la requête à l'aide de la QueryParser
. Analyzer est transmis à queryParser qui analyse la requête en fonction de cet analyseur. De plus, le nom de champ ajouté dans le document est transmis au chercheur de requête afin qu'il recherche les données en conséquence.
Un tableau est maintenu dans topDocs
qui est connu comme scoreDocs
. ScoreDocs
maintiendra les résultats de la recherche sur la base de l'exécution de la requête. En itérant sur ce tableau, les données résultantes peuvent être récupérées.
Recommandation: Il est recommandé que l'analyseur utilisé pour la recherche soit le même avec lequel les données ont été indexées en premier lieu.
Voir aussi
Lucène avec NCache
Configurer les index de requête Lucene
Recherche SQL dans le cache
Cache de recherche avec LINQ