gpt4 book ai didi

mysql - 如何搜索关键字在两个表格之间的多个文本中出现的次数

转载 作者:行者123 更新时间:2023-11-29 15:58:48 25 4
gpt4 key购买 nike

我有 2 个表,它们有以下列。

articles: id (PK), article (longtext), date (date)

keywords: id (PK), keyword (varchar)

目前我只能这样做,搜索一个硬关键字并显示该单词出现次数最多的文本:

SELECT * , MATCH (article) AGAINST ("keyword*" IN BOOLEAN MODE) AS relevance 
FROM `articles`
WHERE MATCH (article) AGAINST ("keyword*" IN BOOLEAN MODE) ORDER BY relevance DESC LIMIT 10

如何搜索每个关键字(表:关键字)在每个文本(表:文章)中出现的次数?

我已经尝试过(我不知道是否可能?),但我得到“反对时的参数无效”:

SELECT keyword
FROM keywords
CROSS JOIN articles
WHERE MATCH (keywords.keyword)
AGAINST (articles.article IN NATURAL LANGUAGE MODE)
<小时/>

编辑戈登·利诺夫:

Table : Keywords

Id Keyword

1 first
2 second
3 text
4 keyword

-

Table : Articles

Id Article

1 the first text
2 the second text
3 text text text

期望的结果:

Keyword     score

text 5
first 1
second 1
keyword 0

最佳答案

将关键字存储在分隔字符串中是错误的存储方式。您应该有一个联结/关联表,每篇文章中的每个关键字占一行。

也就是说,有时我们会被其他人的非常非常糟糕的数据模型所困扰。如果这是您的数据模型,您应该花精力修复它而不是使用它。

但是,您可以通过一些字符串操作来做到这一点:

select kw.motcle,
sum( (length(d.articles) -
length(replace(d.articles, mc.motcle, '')
) / length(d.articles)
) as cnt
from test_motcle mc left join
articles a
on fin_in_set(mc.motcle, replace(d.articles, ' ', ',') > 0
group by mc.motcle
order by cnt desc;

关于mysql - 如何搜索关键字在两个表格之间的多个文本中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56324245/

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