0

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

我目前的做法如下:

  1. 我单独搜索每个术语并将匹配的 id 存储在 php 数组中。
  2. 一旦我搜索了所有术语,我就会计算 id 出现次数并相应地进行排序。

我现在想知道的是是否有更有效的方法可以做到这一点,因为我主要使用 php。我应该在数据库中做一些这样的处理吗?我应该彻底改变我的方法吗?

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

有什么建议么?谢谢。

4

1 回答 1

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(代表 false)和 1(代表 true)。您可以将它们加在一起以获得匹配的总数。

于 2013-08-14T03:14:14.590 回答