我有这样的查询:
$sql = "SELECT *
FROM global_info
WHERE title LIKE '%$string%'
OR tag LIKE '%$string%'
OR body LIKE '%$string%'";
如何计算每行的结果数,然后根据计数订购结果?
例如 第1行:
名称:
漂亮的Adricatic sea照片
体:
这是我和我在亚得里亚海的朋友,在黑山的某个地方。 Adricatic海的颜色是惊人的。
标签:
亚得里亚海,照片
第2行:
名称:
Adricatic sea
身体:
中午休息
标签:
亚得里亚海,照片
有人搜索:
亚得里亚海照片
第1行比第2行有更多结果,它将位于查询结果的第一位。
答案 0 :(得分:1)
您可以使用两种方法。
一种是使用全文搜索 - 这将带您进入一个不同但非常有用的方向。请在http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html了解相关信息。
另一种方法是在进行文本替换时使用强度长度更改来推断它:
(LENGTH(`body`) - LENGTH(REPLACE(`body`, 'Adricatic', '')))/LENGTH('Adricatic')
当然,您可以使用保存用户搜索的字词的变量替换“'Adricatic'”。并且您将为要为分数贡献的每个字段重复。总结得分,你就得到了结果。