繁体   English   中英

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

[英]search for multiple values, sort by relevance (php + MySQL, no full text search)

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

我目前的做法如下:

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

我现在想知道的是,如果有一个更有效的方法来做到这一点,因为我主要使用php来做这件事。 我应该在数据库中进行一些处理吗? 我应该彻底改变我的方法吗?

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

有什么建议么? 谢谢。

你可以在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(表示真)。 您可以将它们一起添加以获得匹配的总数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM