gpt4 book ai didi

mysql 全文匹配,反对

转载 作者:行者123 更新时间:2023-11-29 14:51:55 25 4
gpt4 key购买 nike

我正在尝试对字段进行全文搜索以匹配字符串的特定部分。考虑一个包含数组值的长字符串,例如 201:::1###193:::5###193:::6###202:::6。 ### 分隔数组元素,::: 分隔 key=>val。现在我对 match against 的理解是它可以以 bool 模式匹配字符串的部分。但是当我做一些事情时

`SELECT 
a.settings
, MATCH(a.settings) AGAINST('201:::1') as relevance
, b.maxrelevance
, (MATCH(a.settings) AGAINST('201:::1'))/b.maxrelevance*100 as relevanceperc
FROM
users_profile a
, (SELECT MAX(MATCH(settings) AGAINST('201:::1')) as maxrelevance FROM users_profile LIMIT 1) b
WHERE
MATCH(a.settings) AGAINST('201:::1')
ORDER BY
relevance DESC;`

表格示例

创建表users_profile (
id int(11) 默认 NULL,
个人资料文本,
views int(11) 默认 NULL,
friends_list 文本,
设置文本,
points int(11) 默认 NULL,
KEY id (id),
全文键设置 (设置)
) 引擎=MyISAM 默认字符集=utf8;

我得到的结果为零。欢迎任何想法。

最佳答案

MySQL 全文索引旨在存储自然语言单词。您的样本

201:::1###193:::5###193:::6###202:::6。 ###

仅由数字作为重要部分组成,例如 201,1,192... 因为非常短的单词很少有用,ft_min_word_len通常设置为 4,这意味着索引中没有一个数字是偶数。

全文并不是这个问题的解决方案。

<小时/>

如果您只想计算列中存在表达式的次数,只需使用

(length(a.setting) - length(replace(a.setting,'201:::1',''))) / length('201:::1')

关于mysql 全文匹配,反对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5562237/

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