Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/02/2012, 11:51
Avatar de Shaito
Shaito
 
Fecha de Ingreso: agosto-2010
Mensajes: 383
Antigüedad: 14 años, 3 meses
Puntos: 37
Exclamación Agrupar resultados sql por coincidencias

Hola!

Estoy atascado en un problema, tras obtener los resultados de búsqueda con sql y más de un término de búsqueda, me da varios resultados.

El problema principal es que si, por ejemplo buscamos "El árbol verde" los resultados que nos puede dar son aquellos que contienen el, árbol y verde. En un principio bien, el problema es que, al ordenarlos por id no tiene otra referencia.

Me gustaría poder ordenarlos por veces que se repiten los términos, tengo este code, es un poco malo ya que he estado probando mucho sobre él:

Código PHP:
Ver original
  1. $termino='valor1 valor2 valor3';
  2.     $search_text=$termino;
  3.  
  4.     $search_text=ltrim($search_text);
  5.     $search_text=rtrim($search_text);
  6.        
  7.         $kt=split(" ",$search_text);//Breaking the string to array of words
  8.         // Now let us generate the sql
  9.         $ver_lista_num=0;
  10.         while(list($key,$val)=each($kt)){
  11.         if($val<>" " and strlen($val) > 0){$q .= " nombre like '%$val%' or ";}
  12.         $vtotal+=count($val);
  13.         $ver[$ver_lista_num] = $val;
  14.         $ver_lista_num++;
  15.         }// end of while
  16.  
  17.         $while_v=0;
  18.         while($vtotal>$while_v){
  19.             $n_ver=$ver[$while_v];
  20.             $ver_centros_con=mysql_query("SELECT * FROM centros WHERE nombre LIKE '%$n_ver%'")or die(mysql_error());
  21.             while($ver_centros=mysql_fetch_array($ver_centros_con)){
  22.                 $cname= $ver_centros['nombre'];
  23.                 $ccode= $ver_centros['ID'];
  24.                 $vver[$ccode][$cname]+=1;
  25.                
  26.                 echo $cname.' '.$vver[$ccode][$cname].'<br>';
  27.             }
  28.             $while_v++;
  29.         }

La cosa es que el code, por ejemplo me da resultados como: El árbol verde 3.
Ese 3 son el número de palabras escritas que dentro de la cadena "el árbol verde" coinciden.

Lo que me falta es la parte de ordenar según coincidencias, probé con array pero si más de una tienen las mismas repeticiones de palabras, las descarta y solo deja 1.


Espero que puedan ayudarme
__________________
Shaito Hiraga - Diseñador CSS