java .net lucene full-text-search lucene.net

java - ¿Cuáles son los inconvenientes de usar Lucene?



.net full-text-search (4)

Estoy pensando en utilizar Lucene en mi proyecto para realizar búsquedas muy rápidas. Sé que Lucene crea sus propios archivos donde guarda todos los datos / índices.

Me pregunto cuáles son los inconvenientes de usar Lucene. ¿Hay alguno?

¿Tiene que hacer algo con la base de datos de archivos o funciona bien sin ayuda externa?

PD. Sé que también existe Lucene .NET y apuesto a que las mismas reglas se aplican allí.


Lucene es genial. Muy flexible, sorprendentemente rápido y una sólida API. La lista de correo es extremadamente útil.

Los archivos necesitan un poco de mantenimiento, pero se puede hacer con las herramientas proporcionadas. De primordial importancia es optimizar el índice en ocasiones, pero esto solo es necesario si actualiza el índice regularmente.

Sugeriría investigar a Solr también. Es esencialmente una aplicación web y herramientas que se encuentran encima de Lucene. Hace que sea un poco más fácil crear nuevos índices, mantenerlos optimizados, así como proporcionar la sincronización maestro / esclavo para un clúster de búsqueda escalable. Esto, por supuesto, depende de tus necesidades reales.

Para un ejemplo personal, solía mantener un índice de búsqueda para una compañía de juegos grande y conocida. El índice tenía cientos de miles de entradas en múltiples idiomas (en todo el mundo) y locales. Realizó un millón de búsquedas diarias en el clúster sin utilizar casi ninguna CPU y una cantidad razonable de memoria. Había probado la carga a alrededor de 300 millones de búsquedas por día, en el hardware que teníamos y escalaba linealmente simplemente agregando más cuadros al clúster. Solr y Lucene fueron las principales herramientas para esto.

Si tuviera que dar una desventaja, sería una curva de aprendizaje. Hay un poco de comprensión, y si quiere una solución verdaderamente optimizada, necesita conocerla bien. Sin embargo, esto sucederá con cualquier herramienta de búsqueda que use, si lo hace usted mismo. La documentación, los wikis y la lista de correo brindan mucho apoyo para esta aceleración.


Tengo experiencia limitada con Lucene, hasta ahora ha sido genial. Las desventajas que puedo ver son principalmente desde una perspectiva empresarial:

  1. Tengo que defender activamente el uso de Lucene para mi jefe, de manera predeterminada usaríamos SQL Server. Para hacer el cambio, tendré que demostrar sin lugar a dudas que Lucene tiene un mejor rendimiento (y no solo similar) para el caso de uso que tenemos. Supongo que este pasa por el síndrome "Nadie fue despedido por comprar equipos de IBM".
  2. El desarrollo en curso / las correcciones de errores para Lucene.Net en particular son cuestionables en este punto, de nuevo una venta más difícil sin esto. Espero que la comunidad se pueda unir.

Lucene hace un gran trabajo para muchas personas y compañías . Sin embargo, su millaje puede variar. Un posible problema es el modelo de puntuación de Lucene: utiliza una combinación de TF / IDF y puntuación booleana, mientras que otras herramientas de IR utilizan el BM25 probabilístico, que es más sólido. Sin embargo, puede trabajar con Lucene durante años y los resultados de búsqueda serían lo suficientemente buenos. Además, escalar a muchos millones de documentos no es fácil.

Se reduce a su caso de uso específico. Lo mejor es comenzar una prueba usando Solr y ver si parece ajustarse a sus necesidades.


Lucene tiene un problema de escalabilidad. Su rendimiento se degrada cuando el índice se hace cada vez más grande.