From: | Guillermo Schulman <gschulman_ml(at)yahoo(dot)com(dot)ar> |
---|---|
To: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> |
Cc: | lista de correo de postgres <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Búsqueda indexada de substrings |
Date: | 2005-08-05 19:18:09 |
Message-ID: | 42F3BB71.9040204@yahoo.com.ar |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Gracias Alvaro.
Probé esa herramienta pero aparentemente no es la solución. Instalé el
contrib pg_trgm. Creé la tabla con el índice como lo indica la
documentación, pero al momento de usar el operador '%' no retorna los
resultados esperados.
El operador '%' retorna TRUE si ambos argumentos son "similares". Para
ser "similares" el resultado de la función similarity(text, text) entre
ambos argumentos debe ser superior al límite seteado en set_limit(real).
Por ejemplo:
select similarity('Ames', 'AMS') = 0.285714
select similarity('Williams', 'AMS') = 0.181818
Indefectiblemente si quiero que retorne 'Williams' (como lo haria el
LIKE) debo hacer set_limit(0.181818>real) pero de esa manera me retorna
tambien 'Ames' (cosa que el LIKE no haria).
Les recuerdo que mi intención es simplemente la búsqueda de substrings
dentro de un campo de texto (varchar, text o lo que sea).
Es decir, ¿existe una manera de solucinar esto en pg_trgm para que se
comporte como el LIKE o, en su defecto, existe otra herramienta que
tenga el mismo comportamiento que el LIKE pero que sea más eficiente?
Gracias nuevamente.
Alvaro Herrera wrote:
>On Fri, Aug 05, 2005 at 10:37:38AM -0300, Guillermo Schulman wrote:
>
>
>>Hola a todos.
>>Estoy buscando alguna forma para la búsqueda indexada de substrings en
>>un campo. Es decir, en un campo que contiene nombres quiero buscar todos
>>aquellos que contengan, en cualquier lugar de la cadena, un determinado
>>subtexto y, fundamentalmente, esta búsqueda DEBE ser indexada dado el
>>tamaño de la tabla y la frecuencia de esta consulta.
>>
>>
>
>Para substrings puedes tratar de usar pg_tgrm, que hace busquedas por
>trigramas.
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | dario_d_s | 2005-08-05 21:35:36 | Re: Bsqueda indexada de substrings |
Previous Message | Maritza Parra | 2005-08-05 19:14:49 | Re: PostgreSQL + PHP |