Senhores,

Por favor, estou fazendo uma indexação na minha base de clientes,
utilizando o "Full Text Search", porém não estou conseguindo a fazer a
pesquisa por um nome exato, abaixo estão os passos realizados:

CREATE TABLE cliente
(
  id integer,
  doc character varying(14),
  nome character varying(250),
  busca tsvector
)

--function para padronizar os textos
 CREATE FUNCTION to_ascii(bytea, name) RETURNS text AS
 'to_ascii_encname'
 LANGUAGE internal STRICT;

CREATE FUNCTION simples(texto varchar) RETURNS varchar AS
 'select lower(to_ascii(convert_to($1, ''latin1''), ''latin1''))'
 LANGUAGE sql IMMUTABLE STRICT;

 UPDATE cliente SET busca = to_tsvector(simples(nome));

--criando index
 CREATE INDEX cliente_nome_gidx ON cliente USING gin(busca);

-- OBJETIVO: selecionar o cliente "JOSE DA SILVA NASCIMENTO"
 SELECT  nome from cliente where busca @@  plainto_tsquery(simples('JOSE DA
SILVA NASCIMENTO'));

 Porém retornam estes casos:
JOSE ITAMAR DA SILVA NASCIMENTO
JOSE EDUARDO DA SILVA NASCIMENTO
JOSE ANTONIO DO NASCIMENTO SILVA
JOSE AMERICO SILVA NASCIMENTO
JOSE SILVA DO NASCIMENTO
*JOSE DA NASCIMENTO SILVA*
JOSE DO NASCIMENTO SILVA

A minha dúvida é se consigo fazer a pesquisa pelo nome exato?

Obrigado.

-- 

*______________________________________**Renan Catalani Fuentes de Campos*

*Linkedin:  br.linkedin.com/in/renanfuentes/
<http://br.linkedin.com/in/renanfuentes/>*
*Skype:** renan_fuentes*

*Telefone: (19) 9 9717-9845*
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a