Ir para conteúdo
Fórum Script Brasil
  • 0

Busca Com Varias Palavras


AlexCT

Pergunta

Tenho uma busca já 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 ?

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

até ai tudo bem, mas como ou saber se a pessoa quer procurar por palavra ou pela frase?

o codigo que passei é para separar as palavras

mesmo assim não conseguiria recuperar todas as palavras da busca

pois o codigo que passei ele corta a frase mas não cria uma variavel para cada palavra separada.

Link para o comentário
Compartilhar em outros sites

  • 0

_

mas isso não basta, eu fiz assim e esta dando certo.

Mas esta dando algo que não quero:

- quando é digitado Ex: arco e felcha

peço para deixar a primeira maiuscula, esta deixando assim Arco E Flecha,

é possivel sempre deixar artigos e preposiçoes em minusculos?

- estou usando para busca assim '%"palavra"%', e quando vou buscar algo por exemplo gás, ele retorna todas as palavras que contém gas no meio da palavras, como faço para buscar somente "gás"

- E aquelas funçoes tira acentos, para que serve, pois sempre que vou buscar algo que a palavra tem acento e digito sem acento ou mesmo com acento e uso esta função, retorna como não existe nenhuma palavra e quando destivo esta função e procuro novamente a palavra como ela se escreve corretamente ela retorna. ( Estou usando Access). Para que serve então esta funão que tira acento pois nunca busca palavras que tem acento?

Estou postanto abaixo o codigo que criei para DESTACAR palavra e frase.

esta DESTACANDO palavras minusculas, MAIUSCULAS e 1a letra MAIUSCULAS

'###### Função para Destacar palavra da busca ###############
  Function DestacaTexto(textoBD, n_palavras) 
    y = n_palavras
    Alterado = textoBD
    DO WHILE 0 <= y

        palavra_M = UCase(palavra(y))
        palavra_m = LCase(palavra(y))
        palavra_Mm = UCase(MID(palavra(y),1,1)) & LCase(MID(palavra(y),2,Len(palavra(y))))

        DestTexto = "<FONT style=""BACKGROUND-COLOR:#D1D1D1"" color=""#006600""><STRONG>" & palavra_M & "</STRONG></FONT>"
  Alterado = Replace(Alterado,palavra_M, DestTexto)

        DestTexto = "<FONT style=""BACKGROUND-COLOR:#D1D1D1"" color=""#006600""><STRONG>" & palavra_m & "</STRONG></FONT>"
  Alterado = Replace(Alterado, palavra_m, DestTexto)

        DestTexto = "<FONT style=""BACKGROUND-COLOR:#D1D1D1"" color=""#006600""><STRONG>" & palavra_Mm & "</STRONG></FONT>"
  Alterado = Replace(Alterado, palavra_Mm, DestTexto)

        	
     y = y - 1
	LOOP
        DestacaTexto = Alterado
  End Function
'###########################################

a variavel "i" é um contador de quantas palavras (ARRAY) da busca
             IF RS("descricao") <> "" THEN
               descricao =  Replace(RS("descricao"),Chr(13),"<br>")
               descricao = DestacaTexto(descricao, i)
               Response.Write descricao
             END IF 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...