PHP MySQL按计数查找,计数和排序结果

时间:2012-03-12 15:32:06

标签: php mysql

我有这样的查询:

$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行有更多结果,它将位于查询结果的第一位。

1 个答案:

答案 0 :(得分:1)

您可以使用两种方法。

一种是使用全文搜索 - 这将带您进入一个不同但非常有用的方向。请在http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html了解相关信息。

另一种方法是在进行文本替换时使用强度长度更改来推断它:

(LENGTH(`body`) - LENGTH(REPLACE(`body`, 'Adricatic', '')))/LENGTH('Adricatic')

当然,您可以使用保存用户搜索的字词的变量替换“'Adricatic'”。并且您将为要为分数贡献的每个字段重复。总结得分,你就得到了结果。