el problema es que si hago un order by asi: "order by uDR.priority, uDR.t, uDR.d,uDR.w,uDR.k", no se porque siempre ordena alfabeticamente.
Lo que hice ahora para que al buscar con 2 palabras o mas no haya problemas, fue crear un if y un else, entonces si uno busca 1 palabra se busca con like, pero si uno busca mas de 1 palabra se utiliza match against.
Pero ahora como siempre aparece otro error diferente, no se si en algun momento voy a poder solucionarlos del todo jajaja.
Problema:
Ahora cuando hago una búsqueda, como por ejemplo "tornado y huracan" aparece algo muy extraño... los primeros resultados contienen números en el título, pero en ningún campo del resultado aparece ni la palabra tornado ni huracan, y algunos otros resultados que también aparecen y no contienen las palabras buscadas.
Les dejo el código para que vean que es lo que estoy haciendo, espero que puedan ayudarme a encontrar este error, porque la verdad que estoy completamente perdido, no se porque se produce:
Código MySQL:
Ver original// mas arriba hay otros explode casi iguales
$palabras2=explode(' ',$frase);
$condicion2='';
foreach
($palabras2
as $palabra2
) { if ($condicion2
!='') $condicion2.
=' OR '; $condicion2.="(webDescripcion)";
}
$cant_terminos
= count(explode
(" ", $terminos
));$sssql= mysql_query("SELECT distinct uDR.t as webTitulo, uDR.d as webDescripcion, uDR.w as weburl, uDR.k as webkeywords
from
((select s1.webTitulo as t, s1.webDescripcion as d, s1.weburl as w, s1.webkeywords as k, 1 as priority from webs s1 where $condicion LIKE '%$palabra%')
union
(select s2.webTitulo as t, s2.webDescripcion as d, s2.weburl as w, s2.webkeywords as k, 2 as priority from webs s2 where $condicion1 LIKE '%$palabra1%')
union
(select s3.webTitulo as t, s3.webDescripcion as d, s3.weburl as w, s3.webkeywords as k, 3 as priority from webs s3 where $condicion2 LIKE '%$palabra2%')) uDR
order by uDR.priority ", $server_link)
$sssql= mysql_query("SELECT distinct uDR.t as webTitulo, uDR.d as webDescripcion, uDR.w as weburl, uDR.k as webkeywords
from
((select s1.webTitulo as t, s1.webDescripcion as d, s1.weburl as w, s1.webkeywords as k, 1 as priority from webs s1 WHERE MATCH ($condicion) AGAINST ('$frase' IN BOOLEAN MODE))
union
(select s2.webTitulo as t, s2.webDescripcion as d, s2.weburl as w, s2.webkeywords as k, 2 as priority from webs s2 WHERE MATCH ($condicion1) AGAINST ('$frase' IN BOOLEAN MODE))
union
(select s3.webTitulo as t, s3.webDescripcion as d, s3.weburl as w, s3.webkeywords as k, 3 as priority from webs s3 WHERE MATCH ($condicion2) AGAINST ('$frase' IN BOOLEAN MODE))) uDR
order by uDR.priority ", $server_link)
}
La verdad es que esto me hizo aprender bastante de php y mysql pero a este error no le encuentro una solucion posible... espero que logren encontrarlo.
Muchisimas gracias a todos los que me estan ayudando.
PD: Probe aplicando el order by uDR.priority, uDR.t, uDR.d,uDR.w,uDR.k pero sigue dando esos resultados extraños