gpt4 book ai didi

php - 在一个长词中查找多个词并按相关性对结果进行排序

转载 作者:行者123 更新时间:2023-11-30 22:32:46 26 4
gpt4 key购买 nike

我正在查询一个数据库,该数据库在每条记录中存储一个非常长的单词。没有空格,没有特殊字符,只有 ualpha。现在我正在使用 LIKE 关键字来查找包含我输入的所有单词的记录。我希望脚本首先向我显示相关性最高的结果。

例如,我输入“如果是我”。此脚本应首先返回包含所有这些词的记录,如下所示:

“XSFBENSUMEPOPKLIF

然后它会显示只包含其中两个单词的那些,最后显示只包含其中一个单词的那些。

我尝试使用“ORDER BY CASE”并为最佳匹配打分,如下所示:

 - ORDER BY CASE
- WHEN `code` LIKE '%word1%' AND `code` LIKE '%word2%' THEN 1
- WHEN `code` LIKE '%word1%' THEN 2
- ELSE 3 END;

它可以工作,但当输入的单词超过三个时,服务器就会崩溃,因为它必须浏览将近 400 万 条记录,而且根本无法处理。

之后我尝试了全文搜索,但它不允许我搜索部分单词,只能搜索前缀。

有什么方法可以实现我想要的吗?

最佳答案

我建议添加值。 MySQL 将 bool 值视为整数,因此您可以:

order by ((code like '%word1%') +
(code like '%word2%') +
(code like '%word3%')
) desc

编辑:

当然,这应该在 where 子句之后:

where code like '%word1%' or code like '%word2%' or code like '%word3%'

关于php - 在一个长词中查找多个词并按相关性对结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33426287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com