Hola a todos! Quería hacerles una consulta en principio teórica para sacarme una duda aunque sea más que obvia y parezca tonta...
Para hacer un buscador ya sea de una palabre o de una frase, ¿qué es más recomendable utilizar? ¿LIKE O FULLTEXT?
Les comento xq esto... tengo armado para un sitio un buscador interno que lo implementé gracias a los aportes de los compañeros del foro. Les muestro el código:
Código PHP:
include('conectar.php');
$CantxCol = 4; //Cantidad de columnas
$Cant = 0; // Variable para ser usada como contador
// conexion a la base
$conexion = mysql_connect($host_db, $usuario_db, $pass_db) or die ("no se ha podido conectar a la BD");
mysql_select_db($base_db, $conexion) or die ("no se ha podido seleccionar la BD");
if(isset($_GET['buscar']) && $_GET['buscar'] == '>>'){
$txt_criterio = htmlspecialchars($_GET['txt_criterio']);
$trozos=explode(" ",$txt_criterio);
$numero=count($trozos);
$sqlBuscar = "SELECT * , MATCH (descripcion,categoria,linea)
AGAINST ('$txt_criterio' IN BOOLEAN MODE) AS coincidencias FROM producto WHERE MATCH (descripcion,categoria,linea)
AGAINST ('$txt_criterio' IN BOOLEAN MODE) ORDER BY coincidencias, producto.categoria, producto.cod_linea, producto.cod_articulo" or die(mysql_error());
$res = mysql_query($sqlBuscar);
$numeroRegistros = mysql_num_rows($res);
//calculo el total de páginas, tamaño de la pagina
$tamPag=10;
$tamPag2=16;
//pagina actual si no esta definida y limites
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$pagina = $_GET["pagina"];
}
//calculo del limite inferior
$limitInf=($pagina-1)*$tamPag;
//calculo del numero de paginas
$numPags=ceil($numeroRegistros/$tamPag);
if(!isset($pagina))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$seccionActual=intval(($pagina-1)/$tamPag);
$inicio=($seccionActual*$tamPag)+1;
if($pagina<$numPags)
{
$final=$inicio+$tamPag-1;
}else{
$final=$numPags;
}
if ($final>$numPags){
$final=$numPags;
}
}
$sqlBuscar = "SELECT * , MATCH (descripcion,categoria,linea)
AGAINST ('$txt_criterio' IN BOOLEAN MODE) AS coincidencias FROM producto WHERE MATCH (descripcion,categoria,linea)
AGAINST ('$txt_criterio' IN BOOLEAN MODE) ORDER BY coincidencias, producto.categoria, producto.cod_linea, producto.cod_articulo LIMIT $limitInf, $tamPag2" or die(mysql_error());
$res = mysql_query($sqlBuscar);
}
.....
El tema es que si coloco una frase, por ejemplo;
faro grande me trae todos los resultados de faro y de grande por separado y lo que necesitaría es que me traiga los resultados de
faro grande, así tal cual y luego los resultados si encuentra por separado.
¿Se puede arreglar mi código para poder hacerlo como lo necesito?
Desde ya muchas gracias nuevamente y saludos.
MArx.