Componentes y descripción general de Lucene
Note
Esta función está disponible en NCache Empresa y Profesional ediciones.
Lucene, como sabemos, es un motor de búsqueda potente y eficiente que proporciona una amplia gama de técnicas de búsqueda de texto según los requisitos del usuario. Lucene es mucho más que cualquier otro motor de búsqueda de texto, ya que las opciones que se ofrecen al usuario no se discriminan de ninguna manera. Tiene algoritmos de búsqueda potentes y fuertes y admite una amplia gama de consultas para la búsqueda.
Las aplicaciones de Lucene tienen un ciclo básico que se compone principalmente de primeros datos de indexación en los que se realiza la búsqueda, en una ruta específica. Los datos agregados pueden estar en cualquier forma textual según las necesidades del usuario. Los datos se indexan y tokenizan y luego se realiza una búsqueda en estos tokens mediante consultas. Este es un proceso bidireccional, ya que incluye primero el procesamiento de datos y luego la búsqueda en ellos.
El siguiente diagrama muestra el flujo de trabajo básico del modelo de Lucene.
Componentes de Lucene
Para utilizar Lucene para la búsqueda de texto, echemos un vistazo más de cerca a la API principal utilizada por Lucene. Tenga en cuenta que no es una guía completa para Lucene. Sin embargo, lo ayudará a comprender la API básica y radical de Lucene.
A continuación se muestra la API básica utilizada para crear una solución basada en Lucene.
Directorio: Es la clase base la que define dónde se forman los índices.
Documento: Contiene los datos que se van a indexar.
Analizador: Mientras se indexan los datos, el analizador decide los criterios sobre la base de los cuales se realiza la tokenización y la búsqueda de los datos. De manera similar, se usa al consultar datos que también implican tokenización.
Escritor del índice: Los documentos que se crean de antemano se pasan al directorio utilizando esta clase. Se puede abrir un indexWriter a la vez.
Lector de índices: Cada directorio donde se crean los índices puede tener lectores abiertos que son responsables de leer los datos de los índices.
Buscador de índices: El buscador es responsable de consultar los datos a través de los lectores.
A continuación se presenta la descripción detallada de estas clases:
Directorio
Esta clase es una representación de la ubicación donde se almacenan los índices de Lucene. Es necesario abrir un directorio para mantener los índices de modo que se puedan realizar más operaciones en ellos.
Documento
Un documento es una colección de campos. Estos campos contienen datos textuales como valor frente a un nombre de campo. El valor son los datos que desea indexar y luego hacer que se puedan buscar en el futuro. Con cada campo, el usuario puede especificar si quiere analizar ese valor de campo o no. El documento es básicamente la unidad de búsqueda que se devolverá cuando se busque un campo contra un searchterm
.
Analizador
Analyzer
como se discutió anteriormente, tiene la responsabilidad principal de tokenizar los datos en fragmentos más pequeños según el tipo provisto. Básicamente analiza los campos de los documentos en tokens indexables. La forma en que el analizador analiza los datos influye en la capacidad del usuario para buscar los datos. A continuación se enumeran los cuatro analizadores Lucene básicos y más utilizados.
Analizador de espacios en blanco
Este analizador analiza los datos según los espacios en blanco como muestra el nombre. Además este analizador mantiene el caso de las palabras. Realiza la tokenización de datos según el caso que contiene principalmente.
Analizador estándar
Analiza los datos de acuerdo con las palabras vacías y realiza la tokenización de los datos en minúsculas de forma similar al analizador simple. Además, reconoce las URL y las direcciones de correo electrónico y genera tokens en consecuencia. Debido a esta funcionalidad, es el más utilizado, ya que se considera el analizador más inteligente.
Analizador simple
Indexa los datos en minúsculas y los divide en función de las letras que no son. No indexa direcciones URL ni caracteres que no sean letras, como símbolos o números.
Detener analizador
El analizador de parada genera tokens a partir de los datos de acuerdo con los caracteres que no son letras y las palabras vacías. Las palabras vacías son las palabras que se supone que deben ignorarse durante la indexación, ya que los analizadores las consideran irrelevantes para analizarlas. Además, el analizador de parada no indexa URL ni caracteres que no sean letras, como símbolos o números.
Considere la siguiente oración:
Este es un tutorial para "DistributedLucene" en alachisoft. Com.
Analizador de espacios en blanco | Detener analizador | Analizador simple | Analizador estándar |
---|---|---|---|
Este is a tutoriales para “DistribuidoLucene” at alachisoft. Com. |
tutoriales distribuidoluceno alachisoft com |
así is a tutoriales para “luceno distribuido” alachisoft com |
tutoriales distribuidoluceno alachisoft.com |
Escritor de índice
Para agregar el documento e indexarlo, necesitamos un IndexWriter
. El escritor necesita:
Un directorio de Lucene válido: dónde se va a indexar el documento
Analizador: para que el escritor analice los datos de acuerdo con él.
Writer se comunica con el analizador para los datos indexados y luego agrega los resultados al Directorio para el almacenamiento de los datos. Precisamente, el escritor es el responsable de que todas las operaciones de escritura se realicen correctamente sobre los datos para luego almacenarlos. Hay un conjunto de operaciones que se pueden realizar en el escritor y el escritor se elimina después de todas las operaciones.
Lector de índice
La funcionalidad principal de Lucene es buscar los datos agregados previamente. Para este propósito tenemos IndexReader
que lee los datos del directorio. En cada actualización en los documentos el IndexReader
necesita ser reinicializado. Puede crear un IndexReader
o obtener una instancia de IndexReader
del desplegable IndexWriter
. Pasa la instancia del directorio al lector que tiene todos los documentos indexados.
Buscador de índice
IndexSearcher
es el inicializado con la instancia de
IndexReader
que toma la consulta del usuario y busca los datos en consecuencia. Una consulta es una clase abstracta proporcionada por Lucene y se utiliza para definir el alcance y el tipo de búsqueda que se realizará. En la búsqueda nos devuelven con TopDocs
que es el resultado de buscar con la consulta.
Ahora que se crea la consulta, analice la consulta utilizando el QueryParser
. Analyzer se pasa a queryParser, que analiza la consulta de acuerdo con ese analizador. Además, el nombre de campo agregado en el documento se pasa al buscador de consultas para que busque los datos en consecuencia.
Se mantiene una matriz en topDocs
que se conoce como scoreDocs
. ScoreDocs
mantendrá los resultados de la búsqueda sobre la base de la ejecución de la consulta. Al iterar sobre esta matriz, se pueden recuperar los datos resultantes.
Recomendación: Se recomienda que el analizador utilizado para la búsqueda sea el mismo con el que se indexaron los datos en primer lugar.
Vea también
Lucena con NCache
Configurar índices de consulta de Lucene
Búsqueda SQL en caché
Caché de búsqueda con LINQ