emoji的使用

我计划用 discourse reactions 替换 retort。为了找出要使用的表情符号,我想知道它们在我的论坛上的使用情况。由于找不到相应的查询,我在此分享我的查询:

计算使用 retort 插件添加的表情符号

SELECT count(*), REGEXP_MATCHES(key, '([a-z_+]+)|retort') emoji
    FROM post_details
    WHERE extra = 'retort'
    GROUP BY key
    ORDER BY 1 DESC

计算帖子中的表情符号(不包括系统用户)

SELECT count(*), REGEXP_MATCHES(raw, ' :([a-z_]+): ', 'g') emoji
    FROM posts
    WHERE user_id > 0
    GROUP BY emoji
    ORDER BY 1 DESC
4 个赞

很好。 :slight_smile: 我以前从未使用过 REGEXP_MATCHES,但我刚刚试用了它们(嗯,第二个。我没有安装 Retort :slight_smile:)。

我认为您应该按 emoji 而不是 smiley 进行 GROUP BY。另外 user_id > 1 会排除原始管理员。这可能是故意的,但我想提一下。 :+1:

我还问了 Bert :robot: 寻求解释,以防其他人觉得有用:

Bert 的说法:

此查询用于计算 posts 表中每个表情符号的使用次数。

以下是查询的细分:

  • SELECT count(*), REGEXP_MATCHES(raw, ' :([a-z_]+): ', 'g') emoji: 这是查询的主要部分。它正在计算行数 (count(*)) 并使用正则表达式 (REGEXP_MATCHES) 来匹配和提取 raw 列中的表情符号。正则表达式 ' :([a-z_]+): ' 正在查找以冒号 (:) 开头和结尾,并且中间有一个或多个小写字母或下划线的模式。 ‘g’ 标志表示它将全局匹配,即查找所有匹配项,而不是在找到第一个匹配项后停止。匹配的表情符号随后被别名为 emoji
  • FROM posts: 这指定了从中检索数据的表,在本例中是 posts 表。
  • WHERE user_id > 0: 这是一个过滤正在考虑的行的条件。仅包括 user_id 大于 0 的行。
  • GROUP BY emoji: 这将结果按 emoji 别名进行分组。这意味着对于每个唯一的表情符号,它将计算行数。
  • ORDER BY 1 DESC: 这将结果按结果集中的第一列(即计数)以降序排序。这意味着使用最频繁的表情符号将首先出现。

因此,总而言之,此查询计算 posts 表中每个表情符号的使用次数,针对 user_id 大于 0 的帖子,并按结果排序,以便最常用的表情符号首先出现。

2 个赞

哦,你说得对。我在我的网站上更改了它,但在这里忘了。:blush:

确实,我应该在帖子中提到这一点。user_id 1 是一个遗留用户(当时我的网站仍然允许匿名发帖),我不想将其计入计数。

1 个赞