Busca de nomes

Pessoal,

Nao sei se existe algum metodo pronto ainda nao tive muito tempo de pesquisar
se tiver melhor…mesmo tendo fica um desafio de logica:

A questao e a seguinte gostaria de implementar no banco de dados da empresa um campo de pesquisa no caso nome mas que retornasse nomes mesmo que com a grafia errada, suponhamos: Buscar nome “Marcelo” que por motivos alheios foi cadastrado como “Narcelo” ou “Macelo” entao retornasse todos “Marcelo” e tbem os “like”.

Ate mais…

Valeu!

Oi

Marcelo, eu nunca ouvi falar de nada desse tipo não cara… É uma idéia muito boa, vamos ver aí se alguém consegue implementar… Quem sabe, se der certo, este método poderá ser usado nos DBs…

T+

cara tive uma ideia se pegar a String e comparar caracter por caracter entao mostrar os resultados que tenha um indice de igualdade superior a X%…so q a performance vai por espaco…

Aguardo sugestoes…

Ate mais!

Achei legal isso… posso tentar fazer? Ou o problema já foi resolvido?

nao foi resolvido ainda nao a ideia e essa se vc puder codificar…agente agradece…

Valeu!

Blz… vou começar… A tarde eu posto o código pra gente discutir… blz?

Realmente este seria um método interessante, pois ocorre muito… de alguém digitar o dados errados…

Legal a idéia,

Ricardo Serra
www.portaljava.com
www.open.org.br

Pessoal,

Vespera de feriado ta meio corrido mas vai um esboco do que acho q pode ser feito:


   int tamanho=palavra.lenght(); //palavra a ser encontrada
   int i,j,cont;
   cont=0;   

   for(i=0;i<tamanho;i++0)
     for(j=i+1;j<=tamanho;j++)
        if(substring(i).equals(substring(j)) //compara string com string
           cont++;                                  

    cont=cont/tamanho;          

    if(cont>0.9)       //percentual de igualdade
       out.print(palavra);

por favor nao considerem a sintaxe, mas a logica, nao tive tempo de testar o desempenho que acredito q nao sera satisfatorio pois teriamos q comparar todas as palavras letra por letra…mas acredito q esse pode ser o caminho que podemos aperfeicoar…

Feliz Pascoa a todos

Ate mais…

soh tem um problema… e se o erro foi q o usuario digitou letras a menos, por ex:
ao invez de marcelo, digitou arcelo, o n vai conhecidir nenhuma letra… mas fora isso, ta bom :wink:

Existem soluçoes para banco de dados com esse propósito, que porém custam caro… bom, temlinguagens que fazem isso, por exemplo o PHP tem uma funçao que chama-se sounds ou soundsLike, nao to lembrado ao certo mas que eh para isso ai mais ou menos.
Um amigo me mostrou que uma soluçao dessa para um banco de Dados InterBase, custa 40.000, ele esta desenvolvendo para oFireBird essa soluçao tbm… eh interessante…

Se eu nao me engano o Oracle tem uma funçao desse tipo.

Abraços!

Pessoal comecei a codificar a solucao, e como vi q ja existem solucoes pagas por que nao desenvolver uma free, o codigo q estou trabalhando é este

  String alvo = request.getParameter("nome");
  int tamanho=alvo.length();
  int i,j; 
  double cont=0.0;    
  ResultSet rs=stmt.executeQuery("SELECT * FROM tabalunos");
  while(rs.next())
  {
    String temp = rs.getString("nome");
    int tamanhoj=temp.length();
    cont=0;
    for(i=1;i<=tamanho;i++) 
    { 
       for(j=1;j<=tamanhoj;j++) 
       {
        if(alvo.substring(i-1,i).equals(temp.substring(j-1,j)))
          {
             cont++;
           }
        }  
     }
     cont=cont/tamanhoj;   
     if(cont>0.8)
     {
       out.print(temp);
       out.print("<br>");
     }
  }

uma primeira questao a ser resolvida seria suponhamos o usuario digita “jjjjjj” o sistema mostrara todos os “joao”, “jose” porque o cont esta sendo incrementado em todas as passagens…aguardo comentarios e sugestoes…

Ate mais!

Tai, gostei!