Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

victorp_farias

Busca com sinonimos

Recommended Posts

Olá pessoal estou com uma duvida aqui e depois de muito quebrar a cabeça resolvir buscar ajudar.

Pois bem no meu sistema tenho que fazer um busca pelos produtos do banco de dados de acordo com a string fornecida pelo usuario. Estou fazendo assim:

 

expressao = expressao.replace(' ', '%');

String cmd = "SELECT * FROM produtos WHERE nome like '%"+expressao+"%'";

 

Assim se o usuario pesquisar "lampada quarto" o mysql ira retornar: "lampada do quarto azul","lampada do quarto verde","lampada do quarto vermelha","lampada do quarto" por exemplo.

 

Bem eu queria saber como fazer para ter uma tabela de sinonimos contendo os campos 'palavra' e 'sinonimo' e por exemplo estivessem contidas nela 'lampada' e 'lp' respectivamente, para que quando o usuario fosse pesquisar bastaria apenas "lp quarto".

Será que alguem sabe como fazer isso?

Aguardo a a resposta de vocês, grato desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum não era bem isso que eu estava tentando fazer, deixa ver se eu explico melhor.

Tenho duas tabelas umas de frases que contem por exemplo uma string em um campo "relogio de prata com ponteiros dourados". E uma tabela de sinonimos que iria ter dois campos 'palavra' e 'sinonimos' que conteria por exemplo 'relogio', 'rlg'; 'prata', 'prt' e assim por diante.

Quando o usuario busca-se "rlg de prata" iria me retornar "relogio de prata com ponteiros dourados" se busca-se "relogio de prata" tambem retornaria a mesma coisa se posteriormente fosse adicionados ao campo de sinonimos 'dourado','drd' a busca "relogio drd" produrizia o mesmo resultado dito anteriormente.

Grato pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos lá :

 

Esta query retorna todas as palavras pesquisaveis :

 

SELECT PALAVRA
FROM   SINONIMOS
WHERE  PALAVRA LIKE '%RELOGIO%' 
UNION ALL
SELECT SINONIMO
FROM   SINONIMOS
WHERE  PALAVRA LIKE '%RELOGIO%' 

 

Com base no result set , monte uma sql dinamica em que buscará todos os resultados

 

SELECT * 
FROM produtos 
WHERE (
      nome like '%<palavra1>%'
      or
      nome like '%<palavra2>%'
      or
      nome like '%<palavraN>%')

 

Cuidado apenas com o Sql Injection.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.