gpt4 book ai didi

php - 在将值存储为 CSV 的列上使用多个标签进行最佳结果搜索

转载 作者:行者123 更新时间:2023-11-29 12:05:07 25 4
gpt4 key购买 nike

我将标签存储在以逗号分隔的列中。我正在尝试创建最佳匹配搜索。

我不想匹配部分字符串,因此我在每个字符串的开头和结尾添加了一个逗号,例如 ,apple,orange,banana, 以便我可以使用进行查找LIKE '%,apple,% 并且它不关心位置是什么。

如何根据与搜索标签相比的最佳匹配顺序获取 id 列表

有没有一种纯粹的 mySQL 方法可以做到这一点?

现在我正在 PHP 中处理它,方法是循环每个标签并构建一个计算匹配数量的数组。 99% 的情况下,最多会搜索 5 个标签。

在我的例子中,我使用两个具有单独标签类别的标签字段/列

最佳答案

SQL FIDDLE DEMO

如果没有模式,我想你需要这样的东西。

SELECT 
t.tagID,
t.tagText,
num_match.num_appear,
((LENGTH(`tagText`) - LENGTH(REPLACE(`tagText`, ',', '')))/LENGTH(',')) - 1 as wordnumber,
(num_match.num_appear / (((LENGTH(`tagText`) - LENGTH(REPLACE(`tagText`, ',', '')))*1.0/LENGTH(',')) - 1)) *100 as porcentage

FROM
tblTAG t left join
(SELECT tagID, count(tagID) as num_appear
FROM
(( SELECT tagID
FROM tblTAG
WHERE tagText LIKE '%,apple,%'
) union all
( SELECT tagID
FROM tblTAG
WHERE tagText LIKE '%,banana,%'
)) as result
GROUP BY tagID
) as num_match
ON t.tagID = num_match.tagID

关于php - 在将值存储为 CSV 的列上使用多个标签进行最佳结果搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31630976/

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