Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Búsqueda de palabras con Acentos

From: Jaime Casanova <jaime(at)2ndquadrant(dot)com>
To: Miguel Panuera <mpanuera(at)gmail(dot)com>
Cc: josemanuelruizbaena(at)gmail(dot)com, PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>, Román Mussi <romanmussi(at)nitrico(dot)com(dot)ar>
Subject: Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Búsqueda de palabras con Acentos
Date: 2010-09-22 18:23:14
Message-ID: AANLkTinr-9NRhR-Uj_3tzM3Z-mU1tOu5gjM_EkbMbrCx@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2010/9/22 Miguel Panuera <mpanuera(at)gmail(dot)com>:
> Buenas, al realizar estas funciones,
> tambien se deberia crear un indice con la funcion para optimizar la
> busqueda????????
>

En este caso no, porque esta usando ILIKE y ese operador nunca usa
indices ademas la funcion sp_ascii esta siendo declarada volatile,
pero si haces esto:

CREATE OR REPLACE FUNCTION sp_ascii(character varying)
RETURNS text AS
$BODY$
SELECT TRANSLATE
($1,
'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcC');
$BODY$
LANGUAGE 'sql' IMMUTABLE;

(no veo problema en declarar la funcion IMMUTABLE, o la hay?)

CREATE INDEX idx_ascii_apellido ON nombres (lower(sp_ascii(apellido1)));

SELECT * FROM nombres WHERE lower(sp_ascii(apellido1)) LIKE
lower(sp_ascii('martin'));

deberia funcionar

--
Jaime Casanova         www.2ndQuadrant.com
Soporte y capacitación de PostgreSQL

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2010-09-22 20:06:33 Re: Re: [pgsql-es-ayuda] Búsqueda de palabras con Acentos
Previous Message Guillermo Villanueva 2010-09-22 16:30:46 postgres en ubuntu server