搜索多个值,按相关性排序(php + MySQL,无全文搜索)

时间:2013-08-14 01:37:11

标签: php mysql performance search search-engine

我有一个表格,其中包含我要搜索的标题和关键字列。我想添加使用多项搜索的功能,但是它应该通过相关性对结果进行排序。 FullTextSearch不是一个选项,因为我目前正在使用MySQL5.5和innoDB。

我目前的做法如下:

  1. 我单独搜索每个术语,并在php数组中存储匹配的ID。
  2. 一旦我搜索了所有条款,我就会计算id的出现次数并进行相应的排序。
  3. 我现在想知道的是,如果有更有效的方法来做这件事,因为我主要使用php来实现这一点。我应该在数据库中进行一些处理吗?我应该彻底改变我的方法吗?

    该表相对较小(不到1万条记录),我预计它不会在不久的将来变得更大。

    有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:2)

您可以在SQL中进行计数。这是一个例子:

select ((col like 'term1') +
        (col like 'term2') +
         . . .
        (col like 'termN')
       ) as NumMatches
from t
having NumMatches > 0
order by NumMatches desc;

MySQL将布尔值视为0(表示假)和1(表示真)。您可以将它们一起添加以获得匹配的总数。