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

Busca Tipo Google


Carlos Rocha

Pergunta

ola pessoal.

Consegui uma função que basicamente me atende.

É uma função de busca tipo Google.

Porem, preciso implementar ela um pouquinho.;

1) Nessa função, tem uma variavel $array que é uma array portanto preciso dela recebendo os resultados separados por virgula como uma string.

2) Caso não tenha nenhum resultado, iformar isso. E,

3) Não retornar apenas uma opção mas sim pelo menos uma 04 opções no caso de ter mais de 04 opçoes de com,paração proximas.

<?PHP
$connection = mysql_connect('localhost','root','');
mysql_select_db('muriaeemrede',$connection);
$query = mysql_query("SELECT nome FROM anunciantes");
for($x=0;$x<@mysql_num_rows($query);$x++){
   $fetch = mysql_fetch_array($query);
   $array[] = $fetch['palavra'];
}
//$array = array('J.G. Freitas','Jorge','Edmundo');
print('Você quis dizer: <b>'.voce_quis_dizer('Jhosé',$array).'</b> ?');
function voce_quis_dizer($output,$library){
   for($i=0;$i<count($library);$i++){
      $suggestion[$i]['proximity'] = levenshtein(soundex($output),soundex($library[$i]))*100/strlen($library[$i]);
      $suggestion[$i]['word'] = $library[$i];
   }
   sort($suggestion);
   return $suggestion[0]['word'];
}
?>

Conto com sua ajuda!

Agradecido.

Carlos Rocha

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Busca tipo vboce digita qualkquer coisa la e ele te pergunbta:

voce quiz dizer?

só que neste caso eu precisao saber como calcular quantos indices o sort esta retornando para eu filtrar até 04 resultados só quando o sort tivber mais que 4 e eu não sei como calcular quantos indices o sort esta retornando.

Outro problema nesse s cript esta aqui:

for($x=0;$x<@mysql_num_rows($query);$x++){
   $fetch = mysql_fetch_array($query);
   $array[] = $fetch['palavra'];
}

mais precisamente nessa linha $array[] = $fetch['palavra'];.

como faço para criar uma string com, os resultados da matriz $fetich dessa FORMa: $STRING= "indice0,indice1,indice2...";

Link para o comentário
Compartilhar em outros sites

  • 0

Descobri o que eu realmente preciso:

No código abaixo, a funçao voce_quis_dizer, me retorn apenas 1 valor, o return $suggestion[0]['word'];

Acontece, que estou fazendo uma pesquisa sql para decidir qual nome darei a função para lhe servir de parametro.;

$query = mysql_query("SELECT id, nome FROM anunciantes where bloqueio='n'");
Na verdade, o que eu preciso é do id e do nome do anunciante que a função vai retornar. É possiv el isso sem precisar fazer outra query?
<?
function voce_quis_dizer($output,$library){
   for($i=0;$i<count($library);$i++){
      $suggestion[$i]['proximity'] = levenshtein(soundex($output),soundex($library[$i]))*100/strlen($library[$i]);
      $suggestion[$i]['word'] = $library[$i];
                                    }
   sort($suggestion);
   return $suggestion[0]['word'];
                                         }
?>
...
<?
if ($conta_anunciante==0) {
                    $query = mysql_query("SELECT id, nome FROM anunciantes where bloqueio='n'");
                    for($x=0;$x<@mysql_num_rows($query);$x++){
                    $fetch = mysql_fetch_array($query);
                    $array[] = $fetch[0];
                                                             }
                    print('Você quis dizer: <b><a href=anuncios/Anuncios.php?id='.$id_anunciante.'><br>'.voce_quis_dizer($valor,$array).'</a></b> ?');                
                         }
else {
      while(list($id_anunciante, $nome_anunciante, $seguimento__anunciante, $subseguimento__anunciante) = mysql_fetch_row($busca_anunciante)) 
       {echo "<a href='anuncios/Anuncios.php?id=$id_anunciante'>$nome_anunciante</a>"; echo "<br>"; }
                         }
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Bom pessoal. Com uma pequena gabiarra, porem com o codigo limpo, consegui o que queria:

Segue o código abaixo mas, se por acaso, alguém tivert uma ideia melhor poste para melhorar.

Grato a todods!

<p>&nbsp;</p>
<center><font size='+2'>Você obteve os seguintes resultados<br>para sua pesquisa:</font></center><br><br>
<?
if ($acao != "pesquisa") 
{ echo "<center>Voc&ecirc; n&atilde;o esta fazendo pesquiza alguma pois n&atilde;o digitou nada na caixa ao lado!</center>";}
?>
<?
if ($acao == "pesquisa") {    
if ($valor == "") 
{ echo "<center>Voc&ecirc; n&atilde;o esta fazendo pesquiza alguma pois n&atilde;o digitou nada na caixa ao lado!</center>";}
else {                                           
$busca_anunciante = mysql_query("select id, nome, seguimento, subseguimento from anunciantes where nome like '%$valor%' and bloqueio='n'");
$busca_seguimento = mysql_query("select id, titulo from seguimentos where titulo like '%$valor%' or soundex(titulo) = soundex('$valor')");
$busca_subseguimento = mysql_query("select id, titulo from sub_seguimentos where titulo like '%$valor%' or soundex(titulo) = soundex('$valor')");

$conta_anunciante = mysql_num_rows($busca_anunciante);
$conta_seguimento = mysql_num_rows($busca_seguimento);
$conta_subseguimento = mysql_num_rows($busca_subseguimento);

function voce_quis_dizer($output,$library){
   for($i=0;$i<count($library);$i++){
      $suggestion[$i]['proximity'] = levenshtein(soundex($output),soundex($library[$i]))*100/strlen($library[$i]);
      $suggestion[$i]['word'] = $library[$i];
                                    }
   sort($suggestion);
   return $suggestion[0]['word'];
                                         }
?>
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><H3>Como Anunciantes</H3></td>
    <td><H3>Como Seguimentos</H3></td>
    <td><H3>Como Subseguimentos</H3></td>
  </tr>
  <tr>
    <td valign="top">
<?
if ($conta_anunciante==0) {
                    $query = mysql_query("SELECT nome FROM anunciantes where bloqueio='n'");
                    if (mysql_num_rows($query)==0) {echo "Nenhum resultado<br>como Anunciante<br>foi encontrado<br> para a tua pesquisa!";}
                    else {
                    print('Você quis dizer?<br><br>');
                    for($x=0;$x<@mysql_num_rows($query);$x++){
                    $fetch = mysql_fetch_array($query);
                    $anun[] = $fetch[0];
                                                             }
                    $vc_quis_diser= voce_quis_dizer($valor,$anun);
                      $sql_final = mysql_query("SELECT id, nome FROM anunciantes where nome='$vc_quis_diser' and bloqueio='n'");
                    list($id_anuncia, $nome_anuncia) = mysql_fetch_row($sql_final);                    
                    echo "<a href='anuncios/Anuncios.php?id=$id_anuncia'>$nome_anuncia</a><br>"; 
                         }
                          }
else {
      while(list($id_anunciante, $nome_anunciante, $seguimento__anunciante, $subseguimento__anunciante) = mysql_fetch_row($busca_anunciante)) 
       {echo "<a href='anuncios/Anuncios.php?id=$id_anunciante'>$nome_anunciante</a>"; echo "<br>"; }
                         }
?>                         
    </td>
    <td valign="top">
<?
if ($conta_seguimento==0) {
                    $query = mysql_query("SELECT titulo FROM seguimentos");
                    if (mysql_num_rows($query)==0) {echo "Nenhum resultado<br>como Seguimento<br>foi encontrado<br>para a tua pesquisa!";}
                    else {
                    print('Você quis dizer?<br><br>');
                    for($x=0;$x<@mysql_num_rows($query);$x++){
                    $fetch = mysql_fetch_array($query);
                    $seg_p[] = $fetch[0];
                                                             }
                    $vc_quis_diser= voce_quis_dizer($valor,$seg_p);
                      $sql_final = mysql_query("SELECT id, titulo FROM seguimentos where titulo='$vc_quis_diser'");
                    list($id_segui, $titulo_segui) = mysql_fetch_row($sql_final);                                                             }
                    echo "<a href='Seguimentos.php?acao=seg&seg=$id_segui'>$titulo_segui</a><br>";
                          }
else {
      while(list($id_seguimento, $titulo_seguimento) = mysql_fetch_row($busca_seguimento)) 
       {echo "<a href='Seguimentos.php?acao=seg&seg=$id_seguimento'>$nome_seguimento</a>"; echo "<br>"; }
                          }
?>    
    </td>
    <td valign="top">
<?
if ($conta_subseguimento==0) {
                    $query = mysql_query("SELECT titulo FROM sub_seguimentos");
                    if (mysql_num_rows($query)==0) {echo "Nenhum resultado<br>como Sub Seguimento<br>foi encontrado<br>para a tua pesquisa!";}
                    else {
                    print('Você quis dizer?<br><br>');
                    for($x=0;$x<@mysql_num_rows($query);$x++){
                    $fetch = mysql_fetch_array($query);
                    $subseg_p[] = $fetch[0];
                                                             }
                    $vc_quis_diser= voce_quis_dizer($valor,$subseg_p);
                      $sql_final = mysql_query("SELECT id, titulo FROM sub_seguimentos where titulo='$vc_quis_diser'");
                    list($id_subsegui, $titulo_subsegui) = mysql_fetch_row($sql_final);                    
                    echo "<a href='Seguimentos.php?acao=sub&sub_segui=$id_subsegui'>$titulo_subsegui</a><br>";
                          }
                          }
else {
      while(list($id_subseguimento, $nome_subseguimento, $seguimento_subseguimento) = mysql_fetch_row($busca_subseguimento)) 
       {echo "<a href='Seguimentos.php?acao=sub&sub_segui=$id_subseguimento'>$nome_subseguimento</a>"; echo "<br>"; }
                            }
?>    
    </td>
  </tr>
</table>
<?
}                      }
?>

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...