gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:25:02 24 4
gpt4 key购买 nike

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

我目前的方法如下:

  1. 我单独搜索每个术语并将匹配的 ID 存储在 PHP 数组中。
  2. 搜索完所有字词后,我会计算 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/

24 4 0
文章推荐: java - 在 Apache JsonToStringStyle 中格式化日期
文章推荐: rust - Rocket Framework 示例无法编译
文章推荐: Java 8 将 Optional 转换为 long、int、String 或 Foo