MySQL喜欢多个单词和按重量排序

时间:2013-09-15 16:12:19

标签: php mysql sql-like

让我们有一个简单的InnoDB表questions,其中包含一列text,其中包含以下数据:

What color does the sun have?
What year it is?
What year was Barack Obama born?
Where in europe people speak french?
When stackoverflow started?

现在,我想搜索一下这个专栏:

SELECT *
FROM `questions`
WHERE `text` LIKE '%What%' OR `text` LIKE '%year%';

然而,这会产生输出:

What color does the sun have?
What year it is?
What year was Barack Obama born?

我希望通过搜索单词的出现来排序输出。换句话说,当问题包含“什么”和“年”时,它应该在仅包含“什么”的问题之前。所以输出看起来像这样:

What year it is?
What year was Barack Obama born?
What color does the sun have?

这可以仅使用MySQL完成吗?如果没有,使用PHP有一个很好的方法吗?

1 个答案:

答案 0 :(得分:3)

最简单的方法是将以下order by添加到查询中:

order by (`text` LIKE '%What%') + (`text` LIKE '%year%') desc

如果性能是一个问题,那么你应该研究MySQL全文函数。它们显着加快了许多全文搜索。