用php排序搜索结果

时间:2011-07-29 22:54:50

标签: php mysql sorting search-engine

使用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"

1 个答案:

答案 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}}

匹配字符串中的关键字位置,因此更相关的字符串会显示更高。可以在您的应用程序中轻松实现对此想法的一点递归和修改。