【Project Combat】Introducción a la API de Lucene

1. Marco del motor de búsqueda

¿Cuál es la diferencia entre Lucene o solr? ¿Cuándo se usan?
En primer lugar, Solr se basa en Lucene. Lucene es un conjunto de herramientas de recuperación de información, pero no incluye un sistema de motor de búsqueda. Incluye estructura de índice, herramientas de índice de lectura y escritura, herramientas de correlación, clasificación y otras funciones. Por lo tanto, al usar Lucene, aún debe prestar atención al sistema del motor de búsqueda, como la adquisición de datos, el análisis, la segmentación de palabras y otros aspectos.

El objetivo de Solr es crear un sistema de motor de búsqueda de nivel empresarial, por lo que está más cerca del sistema de motor de búsqueda que reconocemos. Es un servicio de motor de búsqueda. A través de varias API, su aplicación puede usar servicios de búsqueda sin necesidad de que la lógica de búsqueda acoplarse a la aplicación. Además, Solr puede definir la forma de análisis de datos de acuerdo con el archivo de configuración, que es más como un marco de búsqueda, y también admite operaciones como maestro-esclavo y base de datos de intercambio en caliente. También agrega soporte para funciones comunes de motores de búsqueda como Piaohong y facet.

Por lo tanto, Lucene es más flexible de usar, pero usted mismo debe manejar la arquitectura del sistema del motor de búsqueda y la implementación de otras funciones adicionales. Solr ha hecho más por usted, pero es un marco de alto nivel. Muchas características nuevas de Lucene no se pueden cargar de forma transparente a tiempo, por lo que a veces puede encontrar que necesita una función. Lucene lo admite, pero no puede ver el interfaz relevante en Solr. .

2. Explicación de Lucene vs Solr

Mucha gente nueva en Lucene y Solr se hará la pregunta obvia: ¿Debo usar Lucene o Solr? La respuesta es simple: si te haces esta pregunta, en el 99 % de las situaciones, lo que quieres usar es Solr. forma de conceptualizar la relación entre Solr y Lucene es la de un automóvil y su motor. No puedes conducir un motor, pero puedes conducir un automóvil. De manera similar, Lucene es una biblioteca programática que no puede usar tal cual, mientras que Solr es una aplicación completa que puede usar de manera inmediata. Haga que la gente quiera algo.

3. Más explicación

Lucene es más como un SDK. Hay familias completas de API y las implementaciones correspondientes. Puede usarlos para implementar consultas avanzadas (basadas en tecnología de índice invertido) en sus propias aplicaciones.Lucene es muy práctico y conveniente para aplicaciones independientes o de escritorio. Sin embargo, Lucene requiere que los desarrolladores mantengan los archivos de índice ellos mismos, y es muy problemático realizar copias de seguridad y sincronizar archivos de índice en un entorno de varias máquinas. Entonces, hay Solr. Solr es un servidor de consultas basado en Lucene con una interfaz HTTP, que encapsula muchos detalles de Lucene. Su propia aplicación puede usar directamente solicitudes HTTP GET/POST como .../solr?q=abc para consultar, mantener y modificar índices. Por ejemplo, Lucene le brinda un montón de paquetes que le permiten crear una base de datos desde la capa inferior. Solr es un programa de base de datos bien implementado que se puede usar directamente después de la instalación.

4. Comparación

Lucene es un motor de búsqueda, una biblioteca de Java y proporciona una API de Java, que se puede usar en cualquier aplicación (incluido solr, por supuesto) Solr es un servidor de búsqueda, basado en un envoltorio http en Lucene (aunque esta afirmación no es precisa, solr también proporciona muchas otras características), siempre que http apisolr dependa de Lucene, el propósito es que sea más conveniente de usar. El principal competidor es elasticsearch, y elasticsearch también se basa en solr de Lucene, que se usa más en combinación con nutch

1. Cinco clases básicas en la API de Lucene

Para indexar documentos, Lucene proporciona cinco clases básicas

  • Documento
  • Campo
  • IndexWriter
  • Analizador
  • Directorio

1.1 Documento

  • utilizado para describir el documento
  • Un documento puede hacer referencia a una página HTML, un correo electrónico o un archivo de texto.
  • Un objeto de documento se compone de varios objetos de campo.
  • Un objeto Documento = un registro en la base de datos, cada objeto Campo = un campo del registro.

1.2 Campo

  • se utiliza para describir una propiedad de un documento
  • Por ejemplo, el título y el contenido de un correo electrónico se pueden describir mediante dos objetos Field.

1.3 Analizador

  • Antes de indexar un documento, primero se debe segmentar por palabras el contenido del documento, y esta parte del trabajo la realiza Analyzer.
  • La clase Analyzer es una clase abstracta que tiene múltiples implementaciones.
  • Elija un analizador adecuado para diferentes idiomas y aplicaciones.
  • Analyzer envía el contenido segmentado por palabras a IndexWriter para crear un índice.

1.4 Index Writer

  • Una clase central utilizada por Lucene para crear índices.
  • Función: agregue cada objeto de documento al índice.

1.5 Directorio

  • La ubicación de almacenamiento del índice de Lucene
  • Una clase abstracta que actualmente tiene dos implementaciones.

[x] El primero es FSDirectory, que representa la ubicación de un índice almacenado en el sistema de archivos.
[x] El segundo es RAMDirectory, que representa la ubicación de un índice almacenado en la memoria.

2. Clase de consulta en la API de Lucene

Esta es una clase abstracta con múltiples implementaciones, como TermQuery, BooleanQuery y PrefixQuery. El
propósito de esta clase es encapsular la cadena de consulta ingresada por el usuario en una consulta que Lucene pueda reconocer.

3. IndexSearcher en la API de Lucene

Las búsquedas se realizan en índices establecidos.
Un índice solo se puede abrir en modo de solo lectura, por lo que puede haber varias instancias de IndexSearcher operando en un índice.

4. Visitas en la API de Lucene

guardar resultados de búsqueda

Supongo que te gusta

Origin blog.csdn.net/wstever/article/details/129655667
Recomendado
Clasificación