有可能,计算mysql中的匹配数量结构吗?

时间:2010-08-26 12:46:21

标签: php mysql

让我们假设我有一个类似以下的查询

$query_search = "SELECT * FROM `search` WHERE `title` LIKE '%$word%' OR `content` LIKE '%$word%'";

我需要按匹配次数排序行吗?

是否有可能在这种数据库结构中,或者我需要重新设计它?

非常感谢

2 个答案:

答案 0 :(得分:1)

语法可能有点偏,但是会有类似的工作吗?

ORDER BY 
 COALESCE(LENGTH(`title`)-LENGTH(REPLACE(`title`,'$word','')),0)+
      COALESCE(LENGTH(`content`)-LENGTH(REPLACE(`content`,'$word','')),0) 
DESC

字符串中的匹配数可由(LEN(string)-Len(ReplacedString))/Len(Word)

确定

由于Len(Word)是一个常数,不会影响我在上面遗漏的相对排序。

答案 1 :(得分:0)

   ORDER BY  (CASE WHEN title REGEXP $word then 1 else 0 end +
              CASE WHEN content REGEXP $word then 1 else 0 end) DESC