Jump to content


Photo

Busca Palavra


  • Faça o login para participar
1 reply to this topic

#1 alessancost

alessancost

    12 Horas

  • Usuários
  • 196 posts
  • Sexo:Não informado

Posted 22/03/2006, 22:13

Olha eu aqui novamente com esse sistema de busca ;) Beleza pessoal!?
Bem tenho esse codigo de busca


Quando digito ¨casa da Lu¨ aparerece o sequinte resultado:

casa da Lu
casa
casamento
casado
Lu
Luciene

Eu gostria que no resultado aparecesse assim

casa da Lu
casa
Lu

Veja bem, não é palavra exata pos o resultado seria somente:

Casa da Lu

<%    Rs3.MoveNext
  Loop
  end if
   
  If strconsulta <> "" Then
  SQL = "SELECT palavra, registro "
  SQL = SQL + "FROM dicionario_latim "
  IF strbusca = 1 then
  SQL = SQL + "WHERE palavra LIKE '" & TiraAcento(Replace(strconsulta, "'", "''")) & "' "
  end if
  IF strbusca = 2 then
      palavra2=split(strconsulta," ")
  SQL = SQL + "WHERE palavra LIKE '%" & TiraAcento(Replace(palavra2(0), "'", "''")) & "%' "
      for x = 1 to Ubound(palavra2)
  pesq=palavra2(x)
  SQL = SQL + "OR palavra LIKE '%" & TiraAcento(Replace(palavra2(x), "'", "''")) & "%' "
      next
  end if   
  SQL = SQL + "ORDER BY palavra;"

      Rs2.open sql
  intContador = Rs2.RecordCount %>


Obrigado (y)

#2 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 23/03/2006, 08:35

A idéia seria quebrar a palavra, ou melhor, criar um array com cada parte da palavra que esteja entre um espaço.

Exemplo:
'Casa da Lu'

O array deveria conter:
0- Casa
1- da
2- Lu

A partir do array com as palavras, você poderia criar uma função para monstrar uma expressão a ser utilizada no BD.
Função essa que pegaria cada palavra e colocava na estrutura REGEXP.

Exemplo:
WHERE palavra " & getExpr('palavra', 'Casa da Lu') & "

Vamos ver a string completa com o resultado da função:
SELECT palavra, registro 
FROM dicionario_latim
WHERE palavra REGEXP '[^[:alnum:]]Casa[^[:alnum:]]' OR palavra REGEXP '[^[:alnum:]]da[^[:alnum:]]' OR palavra REGEXP '[^[:alnum:]]Lu[^[:alnum:]]'
ORDER BY palavra

Essa é a solução que eu faria utilizando PHP + MySQL.
Não sei se o SGBD que você utiliza suporta o REGEXP.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq