我正试图让我的社区进行自我监管,因此将大多数脏话/敏感信息(正则表达式短语)放入了审查过的监视词中。
但是,我注意到,它不会在帖子被审查时通知管理员。理想情况下,我们希望统计用户使用不良词语/短语的次数,以便在用户发布不当内容过多时将其静音。
Discourse 是否会计算每个用户的被审查帖子/管理员如何才能收到被审查帖子的通知?
我正试图让我的社区进行自我监管,因此将大多数脏话/敏感信息(正则表达式短语)放入了审查过的监视词中。
但是,我注意到,它不会在帖子被审查时通知管理员。理想情况下,我们希望统计用户使用不良词语/短语的次数,以便在用户发布不当内容过多时将其静音。
Discourse 是否会计算每个用户的被审查帖子/管理员如何才能收到被审查帖子的通知?
或者从另一个角度来看,是否可以使用高级搜索过滤器来列出被审查或标记的帖子?
是的,我们先进行了搜索:
我们整理了自己的列表,列出了(大致)可行的内容:
列出所有已存档的帖子:
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:pinned 和 status: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|
供您参考:我们构建了一个相对简单的查询,目前足以满足我们的需求:
SELECT
id, user_id, topic_id, post_number, cooked, raw
FROM posts p
WHERE cooked ~* ‘.*■’
结果如下:
我们的一位 SQL 大师正在构建一个更复杂的查询,用于查找被审查词的确切位置。它有点效果,但他一直在抱怨 raw 和 cooked 的长度不一致……这让我们更加体会到存储,尤其是管理被监视词所找到结果的难度。
你最终成功优化了吗?
不,我认为在 markdown 版本中查找审查过的词语比在实时版本中查找要麻烦得多,而且(目前对于我们的新平台来说)用眼睛扫描更容易。如果有人找到了方法,请告诉我!