PHP MySQL按计数查找、计数和排序结果
我有这样的疑问:PHP MySQL按计数查找、计数和排序结果,php,mysql,Php,Mysql,我有这样的疑问: $sql = "SELECT * FROM global_info WHERE title LIKE '%$string%' OR tag LIKE '%$string%' OR body LIKE '%$string%'"; 如何计算每行的结果数,然后根据计数对结果排序 比如说 第1行: 标题: 飘荡大海的美丽照片 正文: 这是我和我在亚得里亚海的朋友,在黑山的
$sql = "SELECT *
FROM global_info
WHERE title LIKE '%$string%'
OR tag LIKE '%$string%'
OR body LIKE '%$string%'";
如何计算每行的结果数,然后根据计数对结果排序
比如说
第1行:
标题:
飘荡大海的美丽照片
正文:
这是我和我在亚得里亚海的朋友,在黑山的某个地方。
飘忽不定的大海的颜色令人惊叹
标签:
亚得里亚海,照片
第2行:
标题:
漂浮海
正文:
中午吃
标签:
亚得里亚海,照片
有人搜索:
亚得里亚海照片
第1行的结果比第2行多,它将位于查询结果的第一位。您可以使用两种方法 一种是使用全文搜索,这将带你进入一个不同但非常有用的方向。请在网站上阅读 另一种方法是在进行文本替换时,使用强度-长度变化来推断:
(LENGTH(`body`) - LENGTH(REPLACE(`body`, 'Adricatic', '')))/LENGTH('Adricatic')
当然,您可以用包含用户搜索的单词的变量替换“'adrictic'”。你会对每个你想贡献分数的领域重复。将分数相加,您就得到了结果。事实上,在给定的示例数据上搜索
不会得到任何结果,如“%adriatic sea photo%”
,因为显示的列中没有一列包含该精确短语。不确定是否可以在php之外(仅在sql查询中)使用php count()并检查每个类别中选择了多少个结果。最好使用全文索引并按相关分数排序。通过类似的比较,您想要的将导致可怕的查询。