首先显示大多数匹配的结果

时间:2013-02-17 17:11:38

标签: php mysql

我需要php来显示数据库中的结果,结果最多。

我有:

foreach($keywords as $key=>$keyword) {
      $where .= "`title` LIKE '%$keyword%'";
      if ($key != ($total_keywords - 1)) {
        $where .= " OR ";
      }
    }


$results = "SELECT * FROM topics WHERE $where";

所以如果有人在搜索

  

“如何开火”

会显示

  1. 如何开始射击
  2. 开始启动
  3. 如何
  4. 启动
  5. 换句话说,首先是匹配关键字最多的标题。

1 个答案:

答案 0 :(得分:0)

我之前有一个类似的问题,全文搜索不是一个选项,虽然这是一个慢得多的方法,它似乎适合我的需要。基本上,UNION您的每个结果都是这样的,并使用COUNT来计算结果数量:

SELECT Title, COUNT(*) as cnt
FROM (
  SELECT * FROM Topics WHERE Title LIKE '%How%'
  UNION ALL
  SELECT * FROM Topics WHERE Title LIKE '%to%'
  UNION ALL
  SELECT * FROM Topics WHERE Title LIKE '%start%'
  UNION ALL
  SELECT * FROM Topics WHERE Title LIKE '%fire%'
  ) t
GROUP BY Title
ORDER BY 2 DESC

这是Fiddle

以下是结果:

TITLE              CNT
How to start fire  4
to fire start      3
How to             2
start              1