管理员如何找到被审查的帖子?/ 是否有用户被审查词汇的计数?

我正试图让我的社区进行自我监管,因此将大多数脏话/敏感信息(正则表达式短语)放入了审查过的监视词中。

但是,我注意到,它不会在帖子被审查时通知管理员。理想情况下,我们希望统计用户使用不良词语/短语的次数,以便在用户发布不当内容过多时将其静音。

Discourse 是否会计算每个用户的被审查帖子/管理员如何才能收到被审查帖子的通知?

@Nesha

2 个赞

或者从另一个角度来看,是否可以使用高级搜索过滤器来列出被审查或标记的帖子

是的,我们先进行了搜索:

我们整理了自己的列表,列出了(大致)可行的内容:

更多关于列出帖子的技巧

列出所有已存档的帖子:
https://datalabcommonstrial.discourse.group/latest?status=archived

列出所有已关闭的帖子:
https://datalabcommonstrial.discourse.group/latest?status=closed

列出所有已删除的帖子:
https://datalabcommonstrial.discourse.group/latest?status=deleted

列出所有已推送的帖子:
https://datalabcommonstrial.discourse.group/latest?status=bumped

列出所有已推迟的帖子:
https://datalabcommonstrial.discourse.group/latest?status=deferred

列出所有未列出的帖子:
https://datalabcommonstrial.discourse.group/latest?status=unlisted

列出所有已分配的帖子:
https://datalabcommonstrial.discourse.group/latest?status=assigned

列出所有未回答的帖子:
https://datalabcommonstrial.discourse.group/latest?max_posts=1

?可见或不可见?

更多

这可以在搜索框中使用:
您可以使用 in:pinnedstatus:archived 在搜索中执行此操作。

更多

如何搜索/过滤未标记的帖子

advanced_filter(/^status:open$/) do |posts|
advanced_filter(/^status:closed$/) do |posts|
advanced_filter(/^status:archived$/) do |posts|
advanced_filter(/^status:noreplies$/) do |posts|
advanced_filter(/^status:single_user$/) do |posts|
advanced_filter(/^in:first|^f$/) do |posts|
advanced_filter(/^in:pinned$/) do |posts|
advanced_filter(/^in:unpinned$/) do |posts|
advanced_filter(/^in:(likes|bookmarks)/) do |posts, match| advanced_filter(/^in:posted/) do |posts|
advanced_filter(/^in:seen$/) do |posts|
advanced_filter(/^in:unseen$/) do |posts|
advanced_filter(/^in:wiki$/) do |posts, match|
advanced_filter(/^posts_count:(\d+)/) do |posts, match| advanced_filter(/^min_post_count:(\d+)/) do |posts, match|
advanced_filter(/^badge:()/) do |posts, match| advanced_filter(/^with:images/) do |posts|
advanced_filter(/^#([\p{L}0-9-:=]+)/) do |posts, match| advanced_filter(/^group:(.+)/) do |posts, match|
advanced_filter(/^user:(.+)/) do |posts, match| advanced_filter(/^@([a-zA-Z0-9_-.]+)/) do |posts, match|
advanced_filter(/^before:()/) do |posts, match| advanced_filter(/^after:(.*)/) do |posts, match|
advanced_filter(/^tags?:([\p{L}0-9,-+]+)/) do |posts, match| advanced_filter(/^-tags?:([\p{L}0-9,-<em>+]+)/) do |posts, match|
advanced_filter(/^filetypes?:([a-zA-Z0-9,-_]+)$/) do |posts, match|

3 个赞

供您参考:我们构建了一个相对简单的查询,目前足以满足我们的需求:

SELECT
id, user_id, topic_id, post_number, cooked, raw
FROM posts p
WHERE cooked ~* ‘.*■’

结果如下:

我们的一位 SQL 大师正在构建一个更复杂的查询,用于查找被审查词的确切位置。它有点效果,但他一直在抱怨 raw 和 cooked 的长度不一致……这让我们更加体会到存储,尤其是管理被监视词所找到结果的难度。

2 个赞

你最终成功优化了吗?

不,我认为在 markdown 版本中查找审查过的词语比在实时版本中查找要麻烦得多,而且(目前对于我们的新平台来说)用眼睛扫描更容易。如果有人找到了方法,请告诉我!

1 个赞