On 01/13/2012 07:32 AM, Emanuel Calvo wrote:
El día 13 de enero de 2012 10:20, Suso<[email protected]>  escribió:
Hola de nuevo, estoy intentando hacer una busqueda de texto de varias
palabras en un campo de tipo text, p.e.:
Estoy usando postgres 9.0 bajo windows 7 ultimate
Campo

aspirina
diazepam
yodo
...

Hago la consulta directamente desde pgadmin
SELECT  cod from ant_perso where alergias::tsvector @@ ' Aspirina&
yodo'::tsquery;

Pega la fila que crees que debe devolverte, en formato original y
convertida a tsvector.


Haciendo eco a lo que dice Emanuel, aquí está la explicación detallada de los docs:
----------------------------------------------------
Similarly, to_tsvector is usedto parse and normalize a document string. So in practice a text search match would look more like
this:
SELECT to_tsvector(’fat cats ate fat rats’) @@ to_tsquery(’fat & rat’);
?column?
----------
t
Observe that this match would not succeed if written as
SELECT ’fat cats ate fat rats’::tsvector @@ to_tsquery(’fat & rat’);
?column?
----------
f
since here no normalization of the word rats will occur. The elements of a tsvector are lexemes, which are assumed already normalized, so rats does not match rat

---------------------------------------------------

Yo escribiría tu consulta así:

SELECT  cod from ant_perso where to_tsvector(alergias)  @@  
to_tsquery('Aspirina&
yodo');

"Los elementos de un tsvector son lexemas, los cuales se asume que ya están 
normalizados". Entonces por eso hay que usar to_tsvector(), para que normalize el 
texto primero.

Saludos!
--
http://sharingtechknowledge.blogspot.com/

Responder a