使用mysql的搜索结果,如何使用php对结果进行排序,以显示最接近的匹配?
即。用户搜索“关键字”,我有50个结果,其中包含来自我数据库中不同表和字段的“关键字”。他们都匹配。我希望首先显示完全匹配“关键字”的结果,然后显示其他匹配项:
1 = "keyword in this result"
2 = "keyword in 10th result"
3 = "keywords in 5th result"
4 = "has keyword in 3rd result"
5 = "this has the keyword in the 8th result"
6 = "this has mykeyword in the 40th result"
答案 0 :(得分:0)
一旦你将你的记录集恢复到PHP,你就可以轻松地按照usort()
<?php
$keyword = 'foobar';
function cmp($a, $b)
{
if (strpos($a, $keyword) == strpos($b, $keyword)) {
return 0;
}
return (strpos($a, $keyword) < strpos($b, $keyword)) ? -1 : 1;
}
$arr = $my_recordset;
usort($arr, "cmp");
foreach ($arr as $key => $value) {
echo "$key: $value\n";
}
?>
{{1}}对数组进行排序:http://php.net/manual/en/function.usort.php
{{1}}
匹配字符串中的关键字位置,因此更相关的字符串会显示更高。可以在您的应用程序中轻松实现对此想法的一点递归和修改。