Gracias por la respuesta Cuasatar, busqué un símil a stripos en MySQL y encontré la función INSTR.
Puedo hacer el order by y que se ordenen por posición en el título, pero no puedo implementarlo bien, este es el código que encontré:
Si lo reemplazo por mi actual order by, funciona perfecto me ordena por distancia de la palabra buscada en el título, pero deja inservible a el algoritmo anterior.
Quisiera poder combinar a ambos algoritmos, te muestro el actual:
Código MySQL:
Ver original$sqlBuscar = $server_link->query("SELECT uDR.webTitulo, uDR.webDescripcion, uDR.webkeywords, uDR.weburl, SUM(uDR.priority) as SPriority
FROM (
(SELECT s1.webTitulo, s1.webDescripcion, s1.weburl, s1.webkeywords, $a as priority FROM webs s1 WHERE MATCH (webTitulo) AGAINST ('$frase'))
UNION
(SELECT s2.webTitulo, s2.webDescripcion, s2.weburl, s2.webkeywords, $b as priority FROM webs s2 WHERE MATCH (webkeywords) AGAINST ('$frase*' IN BOOLEAN MODE))
UNION
(SELECT s3.webTitulo, s3.webDescripcion, s3.weburl, s3.webkeywords, $c as priority FROM webs s3 WHERE MATCH (webDescripcion) AGAINST ('$frase'))
UNION
(SELECT s4.webTitulo, s4.webDescripcion, s4.weburl, s4.webkeywords, $d as priority FROM webs s4 WHERE MATCH (weburl) AGAINST ('$frase'))) uDR
GROUP BY uDR.webTitulo, uDR.weburl, uDR.webDescripcion, uDR.webkeywords
ORDER BY SPriority DESC
LIMIT $inicio, $TAMANO_PAGINA ");
¿Hay alguna forma para combinar ambos?, probé con el operador AND pero no funcionó, no me mostraba ningún registro.
Saludos!!
PD: Actualmente estoy utilizando full text, pero tenía ciertos inconvenientes, así que decidi combinarlo con BOOLEAN MODE y aplicar este algoritmo que intentaba recién.