----- Mensaje original ----
> De: Alvaro Herrera <[email protected]>
> Para: Gabriel Ferro <[email protected]>
> CC: pgsql-es-ayuda <[email protected]>
> Enviado: miércoles 11 de febrero de 2009, 14:08:16
> Asunto: Re: [pgsql-es-ayuda] orden de registro
>
> Gabriel Ferro escribió:
>
> > El problema es que efectivamente la subconsulta hace un order by
> > usando tsearch complicadito de modo que me da las claves de las
> > personas ordenadas segun un rancking (las mas probables primero). en
> > fin.. buscare otra logica..
>
> Creo que se le puede decir a tsearch que no use ordenamiento por ranking
> (y creo que además es un epsilon más rápido).
> --
epsilon?? que quieres decir con esto?, si te refieres a que la funcion
terminara mas rapido sin usar order by, calculo que tienes razon.Pero la cosa
es que el sistema tiene que hacerlo ya que si busco la persona "PRADON
ALEJANDRA CRISTINA' , la funcion me dara mas o menos asi
"PADRON ALEJANDRA CRISTINA'
"PADRON CRISTINA ALEJANDRA"
"MARTNEZ ALEJANDRA CRISTINA"
"PADRON ALEJANDRA MARIA"
PADRON ESTEFANIA ALEJANDRA"
imaginense que me da como 500 registros... es importante que me de un orden de
acuerdo que me muestre las mas parecidas primero...., y estos resultados para
nuestro trabajo es normal e importante, no solo buscamos a una persona exacta
(tareas de inteligencia criminal)
Les paso la funcion que me sirve para la subconsulta asi se dan una idea (como
veran uso ts_rank_cd para ordenar).
CREATE OR REPLACE FUNCTION padrones.buscaraprox_persona(nom text)
RETURNS SETOF respuesta_buscar_persona AS
$BODY$
DECLARE
RESPUESTA respuesta_buscar_persona%ROWTYPE;
nombusca text;
BEGIN
nombusca= regexp_replace( replace(REGEXP_REPLACE(trim(upper(nom)),'( ){2,}', '
'),' ','|'), E'[\\s\':&()!]+','','g');
FOR RESPUESTA IN (
SELECT padrones.personas.clave AS clave
FROM padrones.personas,
to_tsquery('spanish',trim(nombusca)) AS q
WHERE vectornombre @@ q
ORDER BY ts_rank_cd(vectornombre,q) DESC)
LOOP
RETURN NEXT RESPUESTA;
END LOOP;
RETURN;
END;
$BODY$
Yahoo! Cocina
Recetas prácticas y comida saludable
http://ar.mujer.yahoo.com/cocina/
--
TIP 7: no olvides aumentar la configuración del "free space map"