Para aprender cómo implementar búsquedas sencillas en campos de texto
de una base de datos PostgreSQL hay que utilizar dos funciones:
to_tsvector() y
plainto_tsquery(), y un operador
binario,
@@.
- to_tsvector() convierte una lista de palabras en una
lista de lexemas significativos con las que poder hacer operaciones de
búsqueda. Ejemplo:
postgres=> SELECT to_tsvector('spanish','cómo cazar un león');
to_tsvector
--------------------------
'caz':2 'com':1 'leon':4
(1 row)
Para evitar tener que estar poniendo 'spanish' continuamente, si
nuestra base de datos tiene información únicamente en español, podemos
cambiar el lenguaje de búsquedas por defecto de la base de datos,
con:
ALTER DATABASE cuevasysimas set default_text_search_config = 'spanish';
- plainto_tsquery() se utiliza para convertir una cadena en
un patrón de búsqueda
- @@ se usa para comprobar si se encuentra un patrón de
búsqueda en una lista de lexemas:
postgres=> SELECT to_tsvector('cómo cazar un león') @@ plainto_tsquery('cazando leones');
?column?
----------
t
(1 row)
Por ejemplo, si tenemos una tabla de libros, con las columnas 'titulo'
y 'resumen', y queremos mostrar el título de los libros que concuerdan
con una búsqueda en el resumen, podemos hacer:
postgres=> SELECT titulo FROM libro WHERE to_tsvector(resumen) @@ plainto_tsquery('palabra');
Nuevo comentario
Por favor, escribe tu nombre y lo que quieras decir :-)