Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/01/2009, 15:08
Avatar de rudy69
rudy69
 
Fecha de Ingreso: octubre-2008
Ubicación: espndeportes.com
Mensajes: 195
Antigüedad: 15 años, 6 meses
Puntos: 7
Buscador de nombres

Buenas foreros, tengo un pequenio problemilla por ahi que quisieran que me ayudaran a resolver.

Lo qe tengo hasta ahora es esto

Código PHP:
<?php

$num_telefonico
="SELECT IdCliente,CteNombre,CteTelefono FROM clientes WHERE CteTelefono='$busqueda'";

$nombre_exacto="SELECT IdCliente,CteNombre,CteTelefono FROM clientes WHERE CteNombre LIKE '%$busqueda%'";

$nombre_coincidencias="SELECT IdCliente,CteNombre,CteTelefono,MATCH (CteNombre) AGAINST ('$busqueda') AS coincidencias FROM clientes WHERE MATCH (CteNombre) AGAINST ('$busqueda')";

 IF(!
$busqueda)
   { exit();}
 ELSE
    { IF(
is_numeric($busqueda))
        {
$query=mysql_query("$num_telefonico"$conexion) or die (mysql_error());}
      ELSE
        {
$query=mysql_query("$nombre_exacto",$conexion) or die (mysql_error());
         
$num_rows=mysql_num_rows($query);
            IF(
$num_rows==0)
              {
$query=mysql_query("$nombre_coincidencias",$conexion) or die (mysql_error());
               }
        }
   }


?>
Los opciones de busqueda establecidas son dos

Numero telefonico:
Si la variable $busqueda es numero, se ejecuta la consulta $num_telefonico.

Nombre Exacto:
Si el usuario ingreso ejemplo: "Juan Carlos Mandonado" se ejecutara la consulta $nombre_exacto.

Nombre incompleto:
Si el usuario ingreso "Juan Maldonado" no aparecera con la primera consulta y pasa a ejecutarse la consulta $nombre_coincidencias.

Mi problema consiste en que me tira todos los que se llaman "Juan" (Nombre tan comun por cierto) y los que se llamen "Maldonado" poniendo en primer lugar a "Juan Carlos Maldonado".

La solucion que me he propuesto darle es conocer como MATCH asigna numeros a "coincidencias", he leido mucho acerca de MATCH() pero no he encontrado nada conciso que me diga que formula utiliza para calcular MATCH().

Tengo 3 parametros que me ayuden a resolver (si tiene solucion de esta manera) el problema para este tipo de busqueda.
1- El nombre tiene que tener minimo 4 caracteres.
2- Tiene que haber minimo 2 palabras
3- El numero maximo de caracteres que se pueden alacenar son 40.

Conociendo esto talvez podria calcular el valor minimo que MATCH tomaria cuando coiciden al menos 2 palabras en un nombre, eleminando en el SELECT las personas que solo se llaman "Juan".

Ahora que termino el post croe que va en MySQL xD