El 13/12/2023 a las 15:23, Alvaro Herrera escribió:
Juan José Santamaría Flecha escribió:
On Wed, Dec 13, 2023 at 9:49 AM kernel <jucab...@gmail.com> wrote:
Tengo un campo varchar que contiene descripciones de libros, me gustaría
poder buscar por diferentes palabras, pero pueden estar en orden
distinto o solo contener algunas, no se si hay algo desarrollado o tengo
que hacer varias busquedas
Lo que quieres hacer suena a búsqueda Full Text:
https://www.postgresql.org/docs/current/textsearch.html
Usando websearch_to_tsquery() posiblemente. Puede ser necesario adornar
con la extensión unaccent. Si tienes, por ejemplo, el titulo del libro
en una columna y la descripción en una columna separada, puedes crear un
índice que agrupa las palabras de ambas columnas, de manera que una
búsqueda encuentre cuando las palabras aparezcan en cualquiera de los
dos. También puedes darle "pesos" distintos a las palabras en cada
columna (función setweight), de manera que si una palabra de la búsqueda
aparece en el título, el resultado te muestre ese libro antes que un
libro para el cual la palabra ocurre en la descripción.
Generalmente es bueno saber en qué idioma están los textos, para que
puedas decidir qué "stemming" usar. Mi impresión es que para el español
esto funciona bien, pero no me ha tocado implementar aplicaciones de
verdad usando esta funcionalidad.
voy a ponerme a estudiar el asunto, ya me habéis facilitado varios
caminos a explorar
Gracias por vuestro tiempo, un Saludo