tengo una tabla mySQL donde la gente agrega sus nombres y sus intereses. Quiero usar algún tipo de coincidencia de palabras que se realice y encuentre una coincidencia del 100% o una coincidencia cercana. He oído hablar de la distancia levenshtein, pero no tengo idea de cómo hacer que pase por mi mesa.Concordancia exacta de la palabra de búsqueda posiblemente usando la distancia de Levenshtein
$input = $_POST["interest"];
$result = mysql_query("SELECT interest_desc FROM interests");
hecho algunas google y llegó a este punto
function closest($seed, $haystack){
$shortest = -1;
foreach ($haystack as $word){
$lev = levenshtein($seed, $word);
if ($lev == 0) {
$closest = $word; $shortest = 0; break;
}
if ($lev <= $shortest || $shortest < 0) {
$closest = $word; $shortest = $lev;
}
}
return $closest;
}
$array = mysql_fetch_row($result);
$closestmatch = closest($input,$array);
echo $closetmatch;
¿Estás seguro de que definitivamente quieres hacer esto en PHP? Si desea buscar coincidencias (o cerrar coincidencias), esto es algo que se maneja correctamente en el extremo de DB. Por favor déjanos saber. – rdlowrey
como dice @rdlowery, es mejor que transfiera la responsabilidad a MySQL: lea http://stackoverflow.com/questions/634995/implementation-of-levenshtein-distance-for-mysql-fuzzy-search y http://www.artfulsoftware.com/infotree/queries.php#552 para una solución ... – HorusKol