在帖子标题中查找最常用的单词

时间:2020-09-09 作者:JohnnyBratsoni

是否有任何技术方法可以搜索帖子标题并返回其中使用最多的重复单词的结果?

一、 总共三件物品:

敏捷的棕色狐狸跳过懒惰的狗,为夏天准备一个棕色的袋子,新纪录-运动员跳得更高

布朗跳跃

2 个回复
SO网友:Yash Tiwari

下面的MYSQL查询返回来自wp\\U posts(表)的post\\U标题(列)中的10个最常见值(单词):

SELECT post_title, COUNT(post_title) AS Appearances FROM wp_posts GROUP BY post_title ORDER BY Appearances DESC LIMIT 10

SO网友:Tim

如果您可以使用自定义(且难看的)SQL查询,下面是您可能感兴趣的内容。

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(wp_posts.post_title, \' \', words.n), \' \', -1) word, count(SUBSTRING_INDEX(SUBSTRING_INDEX(wp_posts.post_title, \' \', words.n), \' \', -1)) count

FROM (select 1 n union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9 union all select 10) words

INNER JOIN wp_posts on CHAR_LENGTH(wp_posts.post_title) - CHAR_LENGTH(REPLACE(wp_posts.post_title, \' \', \'\')) >= words.n - 1

WHERE wp_posts.post_type != \'revision\' AND wp_posts.post_status = \'publish\'
  AND SUBSTRING_INDEX(SUBSTRING_INDEX(wp_posts.post_title, \' \', words.n), \' \', -1) NOT IN (\'-\', \'&\', \',\', \'.\')
  AND LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(wp_posts.post_title, \' \', words.n), \' \', -1)) > 3

GROUP BY word
ORDER BY count DESC, word ASC;
说明:

此查询获取所有post_title 从表中提取并将其拆分为单词,以便我们可以对其进行分组和单独计数。

当文章不是修订并已发布时,它会过滤行。它还可以从结果中排除一些单词(使用NOT IN 第条)。它还可以排除小词(使用LENGTH > 3 第条)。

注意:如果您的标题超过10个单词,则不会正确计算。您必须调整select 1 n union all... 行以计算更多单词。

该问题广泛改编自以下回答:https://stackoverflow.com/a/17942691/2342137

PS:如果有人想重写SQL,如果可以重用word 列,而不是执行SUBSTRING_INDEX 好几次,那就太好了。