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