我有一个表格,其中包含我想要搜索的标题和关键字列。我想添加使用多术语搜索的功能,但它肯定应该按相关性对结果进行排序。 FullTextSearch 不是一个选项,因为我目前使用的是 MySQL5.5 和 innoDB。
我目前的方法如下:
- 我单独搜索每个术语并将匹配的 ID 存储在 PHP 数组中。
- 搜索完所有字词后,我会计算 id 出现次数并进行相应排序。
我现在想知道是否有更有效的方法来做到这一点,因为我主要使用 php 来实现这一点。我应该在数据库中进行一些处理吗?我应该彻底改变我的方法吗?
该表相对较小(少于 10k 条记录),我预计它在不久的将来不会变得更大。
有什么建议吗?谢谢。
最佳答案
您可以在 SQL 中进行计数。这是一个例子:
select ((col like 'term1') +
(col like 'term2') +
. . .
(col like 'termN')
) as NumMatches
from t
having NumMatches > 0
order by NumMatches desc;
MySQL 将 bool 值视为 0(表示 false)和 1(表示 true)。您可以将它们加在一起以获得匹配的总数。
关于php - 搜索多个值,按相关性排序(php + MySQL,无全文搜索),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18221869/