tôi có bảng mySQL nơi mọi người thêm tên và sở thích của họ. Tôi muốn sử dụng một số loại từ phù hợp mà đi qua và tìm thấy hoặc là một trận đấu 100% hoặc một trận đấu gần. Tôi nghe nói về khoảng cách levenshtein nhưng không có đầu mối làm thế nào để làm cho nó chu kỳ thông qua bảng của tôi.Độ chính xác của từ tìm kiếm đối sánh có thể sử dụng khoảng cách Levenshtein
$input = $_POST["interest"];
$result = mysql_query("SELECT interest_desc FROM interests");
Xong một số googling và đã đến thời điểm
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;
Bạn có chắc chắn muốn thực hiện điều này trong PHP không? Nếu bạn muốn tìm kiếm các kết quả phù hợp (hoặc đóng các kết quả phù hợp) thì đây là thứ được xử lý đúng trên đầu DB. Xin vui lòng cho chúng tôi biết. – rdlowrey
như @rdlowery cho biết, có lẽ bạn nên bỏ qua trách nhiệm với MySQL - hãy đọc http://stackoverflow.com/questions/634995/implementation-of-levenshtein-distance-for-mysql-fuzzy-search và http://www.artfulsoftware.com/infotree/queries.php#552 cho một giải pháp ... – HorusKol