Re: Búsqueda indexada de substrings

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.
>
>
>

In response to

Browse pgsql-es-ayuda by date

  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