Ir para conteúdo

Arquivado

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

Foxbh

Erro na Busca no BD

Recommended Posts

Ola Pessoal, espero que alguem me ajude nesta minha dúvida sobre busca,

 

tenho uma rotina de busca no BD que faz a busca por palavras chave, antes ela estava funfando perfeitamente so que ela não me dava um resultado exato da busca, tipo assim se eu buscasse por casa e na tabela de PALAVRA_CHAVE tivesse a palavra casaco ele me listaria tambem , então não era uma busca 100% confiavel, resolvi este problema, agora o novo problema e quando eu faço a busca por palavra exata, o codigo não consegue diferenciar duas ou mais palavras separadas por virgula, se eu tiver na tabela PALAVRA_CHAVE as segintes palavras casa, comida, carro e fiser a busca por comida , o resultado e que não foi encontrado nada.

Alguem pode me explicar o que tenho de faser para modificar este resultado, o codigo que eu estou utilisando e este.

 

<!--#include file="conexao.asp"--><% Response.buffer=false%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head>	<title>Procura BD</title></head><body><%' Aqui esta o form if request("nome")="" And request("ultimo_nome")="" then %><form method="POST" action="search_simples.asp"><BR><BR><div align="center">Nome<center><p><input type="text" name="nome" size="10"><br> <table border="1" width="42%">  <tr> 	 <td><input type="radio" value="1" name="MODO" checked> Palavra Exata</td> 	 <td><input type="radio" value="2" name="MODO"> Por aproximação</td> 	 <td><input type="radio" value="3" name="MODO"> Por letra</td>  </tr>  </table>  <p> </p><div align="center"><center><p><br><input type="submit"></p></center></div></form><%elsepalavra=request("palavra_chave")modo = request.form("modo")set RS=server.createobject("ADODB.Recordset")''"+"%"+Varcidade+"%'If modo = "1" then         SQL="SELECT * FROM dados where palavra_chave LIKE ('" &palavra& "')"ElseIf modo = "2" then         SQL="SELECT * FROM dados where palavra_chave LIKE ('%" &palavra& "%')"ElseIf modo = "3" then         SQL="SELECT * FROM dados where palavra_chave LIKE ('" &palavra& "%')"End IfEnd IfEnd IfRS.open SQL,conexao,1,3if RS.eof then%>Nada encontrado<%ElseIf not RS.eof thenRS.movefirstDo%> 	<%=rs("nome")%>BR><%RS.movenextLoop until RS.eofEnd ifrs.closeset rs=Nothingend ifend if%></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara se for busca exata so pegará registros que sejam iguais ao passado e não que contenha uma palavra passada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim, quer diser que não vai ter jeito de faser com que a busca separe as palavras chaves por virgula ou espaço, se eu fiser uma busca por palavra exata ela so me retorna o que esta na tabela tipo casa, comida, carro eu tenho que digitar o mesmo casa, comida, carro na minha busca pra achar alguma coisa ???????????

 

Se fo assim danouse, ai num vai da pé !!!!!! :( :( :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega,Você pode utilizar o operador IN para verificar um conjunto de palavras. Dê uma olhada no BOL do SQL Server para ver mais detalhes, ou alguma outra fonte de pesquisa SQL.Editei para inserir o exemplo abaixo:

SELECT * FROM dados where palavra_chave in ('casa', 'comida','carro') 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Calma q tudo da pra fazer.Mas explica direito q eu não entendi uma coisa.Essas palavras chaves como estão armazenadas na coluna PALAVRA_CHAVE?Cada linha tem uma palavra ou um linha só tem tipo uma frase, casa, comida, carro ai você quer pegar só uma palavra dessa frase é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

E isso, eu vou pegar uma palavra por linha tipo assim se no BD tiver as palavras na coluna PALAVRA_CHAVE ( casa, comida, carro ) e o cliente buscar por carro, a busca vai me dar o resultado referente as aos dados que tenhão a palavra carro na coluna da palavra chave, eu tinha feito isso e funcionou direitinho, so que a busca não me dava o resultado preciso, agora fasendo a busca por palavra exata, ele esta dando este erro

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.