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

Buscar Mais De Uma Palavra


danyort

Pergunta

Bom dia!!

Preciso fazer uma busca em um banco com mais de uma palavra.

Ex.: A pessoa digita "flor branca", e eu preciso buscar essas 2 palavras em lugares diferentes, elas não precisam estar necessariamente juntas no meu banco.

Não sei se fui clara...

Se tiver um texto: "... flor.... branca..." tem que achar igual.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
Bom dia!!

Preciso fazer uma busca em um banco com mais de uma palavra.

Ex.: A pessoa digita "flor branca", e eu preciso buscar essas 2 palavras em lugares diferentes, elas não precisam estar necessariamente juntas no meu banco.

Não sei se fui clara...

Se tiver um texto: "... flor.... branca..." tem que achar igual.

Olá!!

http://scriptbrasil.com.br/forum/index.php...ndpost&p=222736

Realize uma pesuisa no fórum para verificar se alguma resposta pode lhe ajudar!! wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Não era exatamente isso que precisava.

No caso, só vai buscar se as 2 palavras estiverem juntas no texto.

"Script Brasil Forum" - Se a pessoa pedir para buscar script forum, vai ter que encontrar. E usando o like normal, não encontraria nada.

Link para o comentário
Compartilhar em outros sites

  • 0

Não era exatamente isso que precisava.

No caso, só vai buscar se as 2 palavras estiverem juntas no texto.

"Script Brasil Forum" - Se a pessoa pedir para buscar script forum, vai ter que encontrar. E usando o like normal, não encontraria nada.

Não sei ao certo... mas acho que vai ser bem no "WHERE" com "OR" e "LIKE"

Link para o comentário
Compartilhar em outros sites

  • 0

consegui fazer um jeito melhor que pega as palavras em qualquer ordem:

busca=split(request("palavras_chave"),chr(32))
dim onde
for x = 0 to Ubound(busca)
   if x > 0 then
      onde=onde & " and "
   end if
   onde=onde & "campo like '%" & busca(x) & "%'"
next
sql = "select * from tabela where " & onde

Obs: Só essas 9 linhas já valem uns cinquentinha wink.gif

Por mais cinquenta eu deixo as palavras da busca coloridas no resultado biggrin.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Ae cyber mais 50 e faz diferenciar maisculas e minusculas agora hauhahuahua a de diferenciar as palavas é só fazer um replace, mas o problema é que quando desenvolvi uma busca qui para testar ele só acha se for exatamente igual, se você escrever "asp" e estiver no banco como ASP ele não acha =(

Dai não sei exatamente como fazer para arrumar isso, se tiver alguma dica ae seria bom =D

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Ae cyber mais 50 e faz diferenciar maisculas e minusculas agora hauhahuahua a de diferenciar as palavas é só fazer um replace, mas o problema é que quando desenvolvi uma busca qui para testar ele só acha se for exatamente igual, se você escrever "asp" e estiver no banco como ASP ele não acha =(

Dai não sei exatamente como fazer para arrumar isso, se tiver alguma dica ae seria bom =D

Abraços

já tentou converter tudo para maiuscula ou minuscula na hora de fazer o Select:

SQL = "select * from tabela where Ucase(campo) like '%"&Ucase(request("palavra")&"%'"

Link para o comentário
Compartilhar em outros sites

  • 0
Ae cyber mais 50 e faz diferenciar maisculas e minusculas agora hauhahuahua a de diferenciar as palavas é só fazer um replace, mas o problema é que quando desenvolvi uma busca qui para testar ele só acha se for exatamente igual, se você escrever "asp" e estiver no banco como ASP ele não acha =(

Dai não sei exatamente como fazer para arrumar isso, se tiver alguma dica ae seria bom =D

Abraços

já tentou converter tudo para maiuscula ou minuscula na hora de fazer o Select:

SQL = "select * from tabela where Ucase(campo) like '%"&Ucase(request("palavra")&"%'"

é uma chance mas.... já penso se o cara digita assim

Asp é diferente de ASP ou asp... mas acho que talvez eu tenha uma ideia de como fazer isso, vo tentar e se funcionar posto aqui...

Link para o comentário
Compartilhar em outros sites

  • 0

O que o * faz??

Cyber!!!!

Vai selecionar todas as ocorrencias do banco de dados semelhante da pesquisa!!!

Isso, ao meu modo de ver....

Vou fazer uns teste para tentar descobri a diferença do * pro %

EDITADO: Pelo que vi em algumas apostilas de SQL que eu tenho, mais um ótimo artigo postado pelo UrsoLouco no tópico de tutoriais http://scriptbrasil.com.br/forum/index.php...ndpost&p=226641 não existe diferença entre o * e o %

Editado por cyberalexxx
Link para o comentário
Compartilhar em outros sites

  • 0

Bom alem disso tem a função de converter acentos e tal... tipo se o cara busca cao e cão tem diferença...vi um codigo +/- assim, mas num funciona

         busca = request("busca")
        busca = replace(busca,"a","[a,á,à,ã,â,ä,A]")
         busca = replace(busca,"e","[e,é,è,ê,ë,E]")
           busca = replace(busca,"i","[i,í,ì,î,ï,I]")
        busca = replace(busca,"o","[o,ó,ò,õ,ô,ö,O]")
         busca = replace(busca,"u","[u,ú,ù,û,ü,U]")
         busca = replace(busca,"c","[c,ç]")
e o resultado sai assim por exemplo
[a,á,à,ã,â,ä,A]p[o,ó,ò,õ,ô,ö,O]s
ou seja o replace que o cara usa aonde ele ensina não funciona... existe uma forma de fazer isso em um replace só como ta ai emcima ou vou ter que fazer de um em um... tipo
busca = replace(busca,"a","á")
busca = replace(busca,"a","à")
busca = replace(busca,"a","ã")
busca = replace(busca,"a","â")
busca = replace(busca,"a","ä")
busca = replace(busca,"a","A")

Poque ai eliminaria mais uma coisa na busca, procura por acentos...

alguém sabe como arrumar ?

Link para o comentário
Compartilhar em outros sites

  • 0

O código para substituir os acentos funciona sim, testei no meu sistema e deu certo o código ficou assim:

busca=split(request("palavra"),chr(32))
dim onde
for x = 0 to Ubound(busca)
   if x > 0 then
      onde=onde + " and "
   end if
   pesq=busca(x) 
   pesq = replace(pesq,"a","[a,á,à,ã,â,ä,A]")
   pesq = replace(pesq,"e","[e,é,è,ê,ë,E]")
   pesq = replace(pesq,"i","[i,í,ì,î,ï,I]")
   pesq = replace(pesq,"o","[o,ó,ò,õ,ô,ö,O]")
   pesq = replace(pesq,"u","[u,ú,ù,û,ü,U]")
   pesq = replace(pesq,"c","[c,ç]")
   onde=onde+"texto like '%" & pesq & "%'"
next

sql = "select * from texto where " & onde
fiz uma busca por ceus e prinicipio (as palavras estão acentuadas no BD) e deu certo, dei um response.write na instrução SQL e ficou assim:
select * from texto where texto like '%[c,ç][e,é,è,ê,ë,E][u,ú,ù,û,ü,U]s%' and texto like '%%' and texto like '%pr[i,í,ì,î,ï,I]n[c,ç][i,í,ì,î,ï,I]p[i,í,ì,î,ï,I][o,ó,ò,õ,ô,ö,O]%'

Link para o comentário
Compartilhar em outros sites

  • 0

hmmm vou tentar refazer esse sisteminha que tu fez cyber...

mas outra duvida estou tentando fazer igual ao google, achar a palavra e deixar a palavra meio que centralizada e em negrita... tipo limitar caracteres antes e depois e deixar a palavra procurada em negrito...

fiz assim

<%
busca_final = "<b>" & busca & "</b>"
tamanho = len(busca)
texto = instr(rs("descricao"),busca)
texto3 = mid(rs("descricao"),cint(texto) - 10,cint(texto) + cint(tamanho) + 10)
texto4 = replace(texto3,busca,busca_final)
        
response.write texto4
Bom... o que aconteceu ele ta deixando a palavra buscada em negrito... e antes ele ta deixando só 10 caracteres... ta perfeito, mas o limitador de caracteres da direta não ta funcinando ele mostra o texto todo que vem depois da palavra buscada... já tentei de tudo, mas num vai....
texto3 = mid(rs("descricao"),cint(texto) - 10,cint(texto) + cint(tamanho) + 10)

no caso ocorre aqui no mid, especificamente no cint(texto) + cint(tamanho) + 10

explicando

cint(texto) é a posição da palavra busca, ele ta somando com o tamanho da palavra e somo mais 10 caracteres....

um exemplo disso...

e Data no site (Osasco, 13/12/2004) *Cadastrar imovel ter um campo - Inf. Adicional e este campo não pode aparecer na pagina do cliente * Opção no cadastro de imovel - plantão no local, sim ou não *Busca rapida - incluir o campo codigo *Met Tag - dento do admin para o cliente inserir sua palavras chaves. Parte 2 Fazer as alt

tipo ele limito no começo, tanta que começa de um "e" (a palavra procurada foi site no caso) pode ver que só tem 10 caracteres ANTES e depois mostra o texto todo, ele não limita... alguém tem ideia porque ??

E detalhe fiz um teste mandando ele mostrar o "cint(texto) + cint(tamanho) + 10" e ele me retorna o numero exato... é como se função MID não tivesse vendo este numero apesar dele existir...

Acho que nesse tópico vai sair a busca perfeita hein ahahuahuah

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
tenta assim:
<%

busca_final = "<b>" & busca & "</b>"

tamanho = len(busca)

texto = instr(rs("descricao"),busca)

texto3 = mid(rs("descricao"),cint(texto) - 10,cint(texto) + cint(busca) + 10)

texto4 = replace(texto3,busca,busca_final)

      

response.write texto4

Tipos incompatíveis: 'cint'
isso ocorreu porque o campo busca é o request
busca = request("busca")

ele é campo texto no caso...rs

Link para o comentário
Compartilhar em outros sites

  • 0

Que marcada!! pensei uma coisa e fiz outra, o correto é assim:

<%

busca_final = "<b>" & busca & "</b>"

tamanho = len(busca)

texto = instr(rs("descricao"),busca)

texto3 = mid(rs("descricao"),cint(texto) - 10,cint(texto) + cint(len(busca)) + 10)

texto4 = replace(texto3,busca,busca_final)

     

response.write texto4

Link para o comentário
Compartilhar em outros sites

  • 0

huahuahauhauha NADA, meu eu juro que não entendo... meu, ta certo é só por o numero e pronto... que bizarro ahauhauha como ele não consegue limitar...... blink.gif

se eu coloco no mid

texto3 = mid(rs("descricao"),10,30)

ele funciona, bem basicao.... mas se colocar qualquer outra coisa que ERA pra funcionar... nada... nunca vi isso hahahha

Link para o comentário
Compartilhar em outros sites

  • 0
Vai entender?!?!?!

Apesar que eu não acho interessante essa limitação, pois imagine no caso de mais de uma palavra ser solicitada na busca, ai já pira tudo.

sim, mas tipo imagina que o cara faz uma busca e retorna um texto de 500 linhas, iamagina 10 rresultados por pagina, o tamho que vai ficar ahahhahaha entendeu... mas deve ter como fazer... mas bom vo primeira fazer o esquema q tu fez e depois me preocupo com a limitação do texto, mas mesmo assim valeu cyber...

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Vai entender?!?!?!

Apesar que eu não acho interessante essa limitação, pois imagine no caso de mais de uma palavra ser solicitada na busca, ai já pira tudo.

sim, mas tipo imagina que o cara faz uma busca e retorna um texto de 500 linhas, iamagina 10 rresultados por pagina, o tamho que vai ficar ahahhahaha entendeu... mas deve ter como fazer... mas bom vo primeira fazer o esquema q tu fez e depois me preocupo com a limitação do texto, mas mesmo assim valeu cyber...

Abraços

Qualquer coisa limite na raça, defina um total de caracteres padrão tipo 50 e mande listar 50 caracteres a partir da palavra encontrada-10.

Mais vamos indo que daki a pouco , como você disse sai o sistema de busca perfeito, inclusive estou fazendo um trabalho desses no momento (biblia on line) e preciso entregar até amanha as 12:00 e só to no script ainda, nem mexi com design e validações de campos, vou sonhar com busca hoje. Caso queira dar uma olhada naquela busca por varias palavras funfando ta aki: http://www.cyberalex.retrieve.com.br/biblia

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

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