sql >> Base de Datos >  >> RDS >> Mysql

Comparación del motor de búsqueda de texto completo - Lucene, Sphinx, Postgresql, MySQL?

Es bueno ver que alguien intervino sobre Lucene, porque no tengo ni idea al respecto.

Sphinx, por otro lado, lo conozco bastante bien, así que veamos si puedo ser de alguna ayuda.

  • La clasificación de relevancia de los resultados es la predeterminada. Puede configurar su propia clasificación si lo desea, y otorgar mayor ponderación a campos específicos.
  • La velocidad de indexación es súper rápida, porque se comunica directamente con la base de datos. Cualquier lentitud provendrá de consultas SQL complejas y claves externas no indexadas y otros problemas similares. Tampoco he notado ninguna lentitud en la búsqueda.
  • Soy un tipo de Rails, así que no tengo idea de lo fácil que es implementarlo con Django. Sin embargo, hay una API de Python que viene con la fuente de Sphinx.
  • El demonio del servicio de búsqueda (searchd) tiene un uso de memoria bastante bajo, y puede establecer límites en cuánta memoria el proceso indexador también lo usa.
  • La escalabilidad es donde mi conocimiento es más incompleto, pero es bastante fácil copiar archivos de índice en varias máquinas y ejecutar varios demonios de búsqueda. Sin embargo, la impresión general que tengo de los demás es que es bastante bueno bajo una carga alta, por lo que escalarlo en varias máquinas no es algo que deba abordarse.
  • No hay soporte para 'quiso decir', etc., aunque esto se puede hacer con otras herramientas con bastante facilidad. Sphinx deriva palabras mediante el uso de diccionarios, por lo que "conducir" y "conducir" (por ejemplo) se considerarían lo mismo en las búsquedas.
  • Sphinx no permite actualizaciones de índices parciales para datos de campo. El enfoque común para esto es mantener un índice delta con todos los cambios recientes y volver a indexarlo después de cada cambio (y esos nuevos resultados aparecen en uno o dos segundos). Debido a la pequeña cantidad de datos, esto puede tardar unos segundos. Sin embargo, aún necesitará volver a indexar el conjunto de datos principal regularmente (aunque la frecuencia depende de la volatilidad de sus datos, ¿todos los días? ¿Cada hora?). Sin embargo, las rápidas velocidades de indexación hacen que todo esto sea bastante sencillo.

No tengo idea de cuán aplicable es esto a su situación, pero Evan Weaver comparó algunas de las opciones de búsqueda comunes de Rails (Sphinx, Ferret (un puerto de Lucene para Ruby) y Solr), ejecutando algunos puntos de referencia. Podría ser útil, supongo.

No he sondeado las profundidades de la búsqueda de texto completo de MySQL, pero sé que no compite con Sphinx, Lucene o Solr en cuanto a velocidad ni características.