Mecanismo de búsqueda de texto completo
El diseño de la interfaz API de Lucene es relativamente genérico, que se parece a la estructura de la base de datos: tablas -> registro -> campo. Muchas aplicaciones, archivos y bases de datos tradicionales se pueden asignar fácilmente a la estructura de almacenamiento de Lucene / interfaz. En general, puede ver a Lucene como un sistema de base de datos que admite índices de texto completo.
Compare Lucene y la base de datos
Dado que el índice de la base de datos no está diseñado para el índice de texto completo, al usar como «% palabra clave%», el índice de la base de datos no funciona. Por lo tanto, la consulta de la base de datos con términos difusos, LIKE, puede dañar el rendimiento. Si necesita más de una palabra de coincidencia aproximada: como «% keyword1%» y como «% keyword2%» … la eficiencia también se dañará más.
Por lo tanto, para un sistema de recuperación eficiente, la clave es crear una tecnología similar como un mecanismo de indexación para indexar la fuente de datos (por ejemplo, artículos) y almacenar la tabla de palabras clave al mismo tiempo. Luego se construyen las asignaciones (artículo de palabras clave). El proceso de recuperación es solo para encontrar esas asignaciones, por lo que esto mejora en gran medida la eficiencia de la consulta de múltiples palabras clave.
La siguiente tabla compara lucene con la base de datos.
Indexación de texto Lucene | Base de datos | |
Índice | indexar la fuente de datos a través de un índice de texto completo y crear un índice inverso | Para la consulta LIKE, los datos no tienen acceso al índice tradicional, facilitado mediante el uso de coincidencias difusas al estilo GREP. |
Resultados del partido | Por el elemento de palabra (término) para que coincida, a través de la implementación de la interfaz de análisis de idioma, se pueden lograr documentos para chino y otros idiomas que no son inglés | Uso: como «% org%» también coincidirá con «organización». Varias palabras clave de concordancia aproximada: use como «% com% org%»: no puede coincidir con el orden de palabras invertido xxx.org .. xxx.com |
Pareo | Un algoritmo de coincidencia coincide (similitud) en diferente grado. | No tiene el grado de control: por ejemplo, una palabra aparece 5 veces o una vez son iguales |
La salida resultante | A través de un algoritmo especial, las mejores coincidencias se devuelven primero y se devuelve una pequeña cantidad cada vez. | Devuelve todo el conjunto de resultados que coincide, por lo que requiere mucha memoria almacenar el conjunto de resultados temporal. |
Personalización | Puede personalizar fácilmente las aplicaciones con reglas de índice (incluida la compatibilidad con el idioma chino) | Sin personalización |
Conclusión | Bueno para consultas difusas de carga alta y corpus grandes | No es eficiente, bueno para consultas no borrosas |
Innovaciones de Lucene
La mayoría de los motores de búsqueda (bases de datos) utilizan una estructura de árbol B para mantener el índice, lo que provoca muchas operaciones de E / S. Lucene se mejora agregando periódicamente estos nuevos archivos de índice pequeño en el índice grande original, por lo que no afecta la eficiencia de recuperación bajo la premisa de mejorar la eficiencia del índice.
* Mis notas de estudio para lucene, si hay algún entendimiento que no sea exactamente correcto, deje sus comentarios. Gracias.
Una vez que comprenda qué es Lucene comparándolo con la base de datos. Es fácil usar un ejemplo para comenzar.
A continuación se muestra un ejemplo simple, en el que la parte del código es bastante buena y la explicación se puede ignorar ya que no está en inglés.
Dirección: http://www.ibm.com/developerworks/cn/java/j-lo-lucene1/