Foros del Web » Programando para Internet » PHP »

Por que mi buscador no encuentra textos inferiores a 3 letras?

Estas en el tema de Por que mi buscador no encuentra textos inferiores a 3 letras? en el foro de PHP en Foros del Web. Muy buenas. Tengo un buscador interno en la web que aunque funciona correctamente me a dado una sorpresa muy extraña. No hace busquedas de textos ...
  #1 (permalink)  
Antiguo 25/03/2013, 03:51
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 1 mes
Puntos: 6
Por que mi buscador no encuentra textos inferiores a 3 letras?

Muy buenas.
Tengo un buscador interno en la web que aunque funciona correctamente me a dado una sorpresa muy extraña.
No hace busquedas de textos inferiores a 4 letras. Si quiero que busquen tos o té no muestra resultados y la verdad que no lo comprendo ya que no existe ninguna linea que indique que exista un numero minimo de caracteres.
Os dejo el codigo para ver si alguien puede echarme un cable con esto.
Formulario de la busqueda
Código:
<form action="insertar-busqueda.php" method="post" id="buscar">
            	<p>Titulo</p>
            	<input type="text" name="titulo"/>
                <p>Url</p>
                <input type="text" name="url"/>
                <p>Descripción</p>
                <textarea name="descripcion"></textarea>
                <input type="submit" value="enviar"  />
            </form>
php busqueda.
Código:
<?php
$conexion=mysql_connect("localhost", "xxxxxxxxx", "xxxxxxxxxx") or die('Error de conexi&oacute;n a la Base de Datos!!!');
//conexión con la base de datos
mysql_select_db("otraform_general2",$conexion) or die('Error de selecci&oacute;n de Base de Datos!!!');
        // Con esta sentencia SQL insertaremos los datos en la base de datos
        mysql_query("INSERT INTO buscador (titulo,url,descripcion)
        VALUES ('{$_POST['titulo']}','{$_POST['url']}','{$_POST['descripcion']}')",$conexion);
       if (mysql_errno($conexion))
		{
			echo "No se pudo insertar los datos en la tabla. Error" .mysql_errno() ." - ".mysql_error();
			mysql_close($conexion);
		}	else{
			$conexion;
			header("location:ver-busqueda.php");
			}
?>
Código:
<?php
$server_link = mysql_connect("localhost", "xxxxxxxx", "xxxxxxxxxx");
if (empty($_GET['frase'])){
$texto_busqueda = "";
}else{
$texto_busqueda = $_GET['frase'];}
// varificamos que el formulario halla sido enviado
if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){
    $frase = addslashes($_GET['frase']);
    // hacemos la consulta de busqueda
    // ver explicación mas abajo
    $sqlBuscar = mysql_query("SELECT titulo, url, descripcion,
                            MATCH (titulo, url, descripcion)
                            AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
                            FROM buscador WHERE MATCH (titulo, url, descripcion)
                            AGAINST ('$frase' IN BOOLEAN MODE)
                            ORDER BY coincidencias DESC", $server_link)
                            or die(mysql_error());
    $totalRows = mysql_num_rows($sqlBuscar);
    // Enviamos un mensaje
    // indicando la cantidad de resultados ($totalRows)
    // para la frase busada ($frase)
}
?>
Alguien puede ayudarme con esto por favor?
Muchas gracias
__________________
http://www.paxarindesign.es
  #2 (permalink)  
Antiguo 25/03/2013, 03:59
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 6 meses
Puntos: 2237
Respuesta: Por que mi buscador no encuentra textos inferiores a 3 letras?

MySQL está configurado para buscar mínimo 3 caracteres; deberías modificar en el archivo de configuración la variable ft_min_word_len; el único problema es que si tu web está en un servidor compartido, no podrás hacer el cambio.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 25/03/2013, 05:26
Avatar de evolutionrgm  
Fecha de Ingreso: mayo-2011
Mensajes: 108
Antigüedad: 12 años, 9 meses
Puntos: 5
Respuesta: Por que mi buscador no encuentra textos inferiores a 3 letras?

Estimado y haz intentado utilizar la condicion LIKE en tus consultas yo realice una agenda con busqueda por nombres y asi pude sacar un problema muy parecido al tuyo :)
  #4 (permalink)  
Antiguo 25/03/2013, 08:45
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 4 meses
Puntos: 175
Respuesta: Por que mi buscador no encuentra textos inferiores a 3 letras?

MATCH AGAINS tiene esa particularidad, ya que busca en campos FULLTEXT.. imaginate, buscar en todos los campos una palabra que empiece con "co" o "ar" y no hablo de que empiece con esas letras, sino que cualquier palabra contenga esas do letras, te consumirá recursos en vano... por eso lo limitan a un minimo de 3 letras... como te dijeron... lo que yo haría es contar los espacios de lo que se busca en la variable $buscar

Si tiene un espacio es decir... si escribio algo como "la flecha" pues en el if hago que busque por MATCH AGAINST pero si no tiene espacios, es decir algo como "flecha" que lo busque por LIKE y te será mil veces más efectivo.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Etiquetas: buscador, encuentra, formulario, mysql, resultados, select, sql, tabla, textos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:40.