Ir para conteúdo

POWERED BY:

Arquivado

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

AlexCT

Busca com varias palavras

Recommended Posts

Tenho uma busca ja pronta e funcionando onde quando a pessoa digitar um valor composto por exemplo:

olho azul

 

A busca é por duas palavras distintas, por olho separado do azul (mas no script ela procura sepadamente, ams depois junta a busca)

 

Mas gostaria de fazer algo para quando a pessoa digitar olho+azul, fosse procurado a palavra em conjunto olho azul.

 

Por isso não sei como fazer para reconhecer o "+", tratar a palavra composta.

 

Já pensei e para cada palavra que achar criar um array para ela (para não perder a palavra anterior), seria um caminho?

 

Pois seria uma boa alternativa, pois poderia ter um check na busca da frase exata e busca por palavra.

Seria muito complicado fazer assim?

 

Mas o meu grande Problema mesmo... pelo o que viu é criar uma variavel para cada palavra digitada

Posso fazer como?

 

 

Abaixo esta uma parte do programa de busca, somente a parte que separa as palavras

 

'definimos todas as variáveris que vamos usar na 'criação da declaração de SQL dim espaco dim cada_palavra dim comp dim retirar  'Começamos por retirar os espaços a mais à esquerda 'e à direita da string de busca busca = trim(busca) 'Vamos retirar da string de busca cada uma das palavras 'existentes. Para isso, vamos separar cada uma das palavras, 'e só paramos quando já não existirem espaços na string. 'Se não existem espaços, é porque só existe uma palavra. do until instr(1,busca,chr(32)) = 0 'Começamos por verificar em que posição está o espaço 'mais à esquerda. espaco = instr(1,busca,chr(32)) 'Retiramos da String apenas uma palavra, e cada_palavra = left(busca,espaco-1) 'adicionamos essa palavra à busca na declaração de SQL SqlJunk = SqlJunk & " title LIKE '%" & cada_palavra & "%' and" 'Verificamos o comprimento total da string, comp = len(busca) 'para determinar qual o comprimento depois de ter retirado 'uma palavra. retirar = comp - espaco 'A string que vai passar a ser usada será a inicial 'menos a palavra já colocada na declaração de SQL. busca = right(busca,retirar) 'Vamos fazer isto até sobrar apenas uma palavra. loop 'Quando sobrar só uma palavra, ou se desde início só 'existir uma, ela será adicionada neste ponto à 'declaração de SQL. SqlJunk = SqlJunk & " title LIKE '%" & busca & "%'" 'Ordenamos os registos que vamos obter alfabeticamente, 'para mais fácil leitura. SqlJunk = SqlJunk & " ORDER BY title"  'executamos a declaração de SQL para obtermos a informação 'pretendida da nossa base de dados. rsGlobalWeb.Open SqlJunk, dbGlobalWeb, 3

ALGUMA SUGESTÃO ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o codigo que passei é para separar as palavraspois estou com dificuldade de fazer algo para a pessoa procurar por palavras distintas e pela frase inteirapois o codigo que passei ele corta a frase mas nao cria uma variavel para cada palavra separada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi....

veja se isto te ajuda?

qualquer coisa tenho outros com busca diferentes.

 

<% 'o option explicit é utilizado para criar a obrigatoriedade 'de anunciar cada variavel com o dim, de forma a não criar 'variáveis por engano, principalmente por erro de escrita. Option Explicit 'Vamos começar por criar o formulário para efectuar a busca. 'Definimos a variável com a string para efectuar a busca Dim busca  'Vamos buscar a string de busca busca = request.form("busca") 'Se a string for vazia, então não existiu qualquer busca, 'e vamos criar o formulário. Se a string existir, então 'vamos efectuar a busca com ela. if busca = "" then%> <form action="#" method="post" name="search"> <table cellspacing="1" cellpadding="1" border="1" bordercolor=black> <tr> <td><input type="text" name="busca" size="100" maxlength="300"></td>  <td><input type="submit" value="Search"></from></td>  </tr> </table> <%response.write "<center>Esta busca reporta as palavras que estiverem no mesmo valor do campo<br>"response.write "Nao faz busca em valores de campos diferentes,<br> "response.write "Ex:  campo1=wagner conectou na internet <br> campo2=wagner foi jogar bola<br>"response.write "Se procuro por (wagner bola) me retorna (campo2),<br>"response.write" e nao campo1 por existir o nome wagner e campo2 por conter wagner e bola<br>"response.write "Funciona como uma busca de maior precisao em campos</center>"else 'definimos a variável para a conecção à base de dados Dim dbGlobalWeb 'definimos o recordset para conter a informação da BD Dim rsGlobalWeb 'definimos a variável que vai guardar as declarações de SQL a usar Dim SqlJunk 'definimos dbGlobalWeb como um objecto para uso com a BD  Set dbGlobalWeb=Server.CreateObject("ADODB.Connection") 'Fazemos a ligação à base de dados dbGlobalWeb.Open "PROVIDER=MSDASQL; DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("busca.mdb")  'definimos outro objecto para o Recordset Set rsGlobalWeb = Server.CreateObject("ADODB.Recordset") 'Vamos começar a criar a declaração de SQL SqlJunk = "SELECT * FROM tabela WHERE" 'definimos todas as variáveris que vamos usar na 'criação da declaração de SQL dim espaco dim cada_palavra dim comp dim retirar 'Começamos por retirar os espaços a mais à esquerda 'e à direita da string de busca busca = trim(busca) 'Vamos retirar da string de busca cada uma das palavras 'existentes. Para isso, vamos separar cada uma das palavras, 'e só paramos quando já não existirem espaços na string. 'Se não existem espaços, é porque só existe uma palavra. do until instr(1,busca,chr(32)) = 0 'Começamos por verificar em que posição está o espaço 'mais à esquerda. espaco = instr(1,busca,chr(32)) 'Retiramos da String apenas uma palavra, e cada_palavra = left(busca,espaco-1) 'adicionamos essa palavra à busca na declaração de SQL SqlJunk = SqlJunk & " campo LIKE '%" & cada_palavra & "%' and" 'Verificamos o comprimento total da string, comp = len(busca) 'para determinar qual o comprimento depois de ter retirado 'uma palavra. retirar = comp - espaco 'A string que vai passar a ser usada será a inicial 'menos a palavra já colocada na declaração de SQL. busca = right(busca,retirar) 'Vamos fazer isto até sobrar apenas uma palavra. loop 'Quando sobrar só uma palavra, ou se desde início só 'existir uma, ela será adicionada neste ponto à 'declaração de SQL. SqlJunk = SqlJunk & " campo LIKE '%" & busca & "%'" 'Ordenamos os registos que vamos obter alfabeticamente, 'para mais fácil leitura. SqlJunk = SqlJunk & " ORDER BY id" 'executamos a declaração de SQL para obtermos a informação 'pretendida da nossa base de dados. rsGlobalWeb.Open SqlJunk, dbGlobalWeb, 3 'Aqui vamos verificar se a busca retornou algum valor If Not rsGlobalWeb.BOF Then%> <table cellspacing="1" cellpadding="1" border="1" bordercolor=black> <tr> <td width="350">Title</td>  </tr> </table> <table cellspacing="1" cellpadding="1" border="1" bordercolor=black> <%'Criamos um loop para visualizar a informação completa Do While Not rsglobalweb.EOF%> <tr> <td width="350"><%=rsGlobalWeb("novo")%></td>  </tr> <% rsGlobalWeb.Movenext Loop%> </table> <% 'Caso não tenha sido encontrado qualquer valor else%> <table cellspacing="1" cellpadding="1" border="1" bordercolor=black> <tr> <td>Não foi encontrado qualquer registo.</td>  </tr> <%End If 'Fechamos o recordset e a ligação à base de dados. rsGlobalWeb.Close set rsglobalweb = nothing dbGlobalWeb.Close set dbglobalweb = nothing end if%>

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.