【发布时间】:2015-05-16 07:41:48
【问题描述】:
我正在尝试为我的网站做一个小型搜索引擎。 首先,用户输入一些关键字并转到使用此代码的结果页面:
$result = array();
$keyword_tokens = explode(' ', $keywords);
$keyword_tokens = array_map(
function($keywords) {
return mysql_real_escape_string(trim($keywords));
},
$keyword_tokens
);
$sql = "SELECT * FROM search_table WHERE concat(title, description) LIKE '%";
$sql .= implode("%' OR concat(title, description) LIKE '%", $keyword_tokens) . "%' ORDER BY instr(description, '$keywords') DESC, instr(title, '$keywords') DESC";
$result=mysql_query($sql);
此代码允许搜索用户请求的关键字并按 $keywords 排序,因此按关键字组的完整确切字符串...
我要做的是按每个关键字的出现次数最多对结果进行排序。 例如,如果我的 sql 结果的一行包含 5 个关键字,另外一个包含 3 个等。那么 5 个关键字应该首先出现。我正在搜索按更多匹配的关键字对结果进行排序。
希望一切都可以理解......
非常感谢您的帮助!
【问题讨论】:
-
或许看看全文索引
-
我没听懂你的问题 ??..如果用户输入关键字并且输入最多的结果应该排在第一位 ??.那是你的 qus 吗?
-
您好,用户在发送到搜索页面的表单中选择 $keywords。我正在搜索按更多匹配的关键字对结果进行排序。
-
全文索引可能是完成此任务的最简单方法,或者您可以如下构建动态
order by
标签: php mysql sql sorting keyword-search