gpt4 book ai didi

mysql - 按每行多个字段中的字符串出现次数对结果进行排序

转载 作者:行者123 更新时间:2023-11-29 01:42:51 24 4
gpt4 key购买 nike

我正在尝试在 MySQL 数据库上创建(某种)全文搜索:我想在 2 个字段中查找字符串“abc”的出现 TITLEDESCRIPTION并按出现次数(每行)对结果进行排序,最好是加权,即在 TITLE 中找到的每个“abc”计数是 DESCRIPTION 中匹配项的 2 倍.

这完全可以在一个(可能又长又丑)查询中实现,还是我必须创建一些单词索引表?

到目前为止,我的方法找到了事件,但没有排序,但只有权重。 (我用 PHP 做后者,但这开始变得非常昂贵):

SELECT * FROM CONTENT WHERE (`TITLE` like '%abc%' OR DESCRIPTION like '%abc')

最佳答案

您可以使用replace 将字符串缩短为搜索命中数。这样你就可以计算一个字符串在一列中出现的次数。您可以在每个出现次数前加上一个因子以增加其权重。此示例将 col1 计数两次:

select  *
, (
2 * (char_length(col1) - char_length(replace(col1,'abc',''))) +
(char_length(col2) - char_length(replace(col2,'abc','')))
) / char_length('abc') as Occurances
from YourTable
order by
Occurances desc

Live example at SQL Fiddle.

关于mysql - 按每行多个字段中的字符串出现次数对结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14921414/

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