Motor de búsqueda para base de datos de productos MySQL con ~15k elementos

Quiero una biblioteca que pueda usar con mi sitio, en la que pueda ingresar el título y la descripción de todos los elementos que tengo, y luego ingresar términos de búsqueda en inglés natural y obtener resultados relevantes. Estoy muy dispuesto a buscar soluciones pagas o incluso SaaS, así como software de código abierto.


Para evitar un problema X/Y , este es mi problema:

Tengo esta base de datos de artículos que se venden en un sitio de comercio electrónico. La gente quiere encontrar artículos y hay una barra de búsqueda en la parte superior. Antes de llegar aquí, simplemente tomó cada palabra clave e hizo una consulta similar a

SELECT name,description,price,etc... 
FROM products 
WHERE name LIKE '%keyword1%' 
OR name LIKE '%keyword2%' 
OR description LIKE '%keyword1%' 
OR description LIKE '%keyword2%'

Luego lo cambié para usar el índice FULLTEXT de MySQL tanto en el nombre como en la descripción, y luego implementé una solución casera para analizar cadenas como "4 pies" tanto en la consulta como en el título y compararlas como medidas en lugar de como texto simple. Incluso ahora, muchos productos no aparecen cuando deberían o están demasiado abajo en la lista. Después de todo esto, me di cuenta de que alguien había hecho esto antes y que debería usar su código en lugar de intentar hacerlo yo mismo, ya que ya he invertido demasiado tiempo en esto.

FYI, 15,000 elementos de productos no es una cantidad "grande" para casi cualquier base de datos.
@BasilBourque bastante justo, he editado en consecuencia.

Respuestas (2)

Una mirada a Apache Solr o ElasticSearch podría ser útil.

Puede instalarlos usted mismo o puede usar algún proveedor de SaaS que los ofrezca.

MariaDB/MySQL ya tiene (excelente) búsqueda de texto completo . Le recomiendo que primero intente usar ese en lugar de una biblioteca de terceros.

Como mencioné en mi pregunta, ya he intentado usar el índice de búsqueda de texto completo. Funciona bien, pero no tiene las funciones suficientes para satisfacer mis necesidades y terminé teniendo que agregarlo, lo que rápidamente se volvió muy desordenado. En particular, no puede buscar números de pieza con guiones y no me permite priorizar algunas palabras clave sobre otras.