コミュニティが自己規制できるように、ほとんどの卑猥な言葉/機密情報(正規表現フレーズ)を検閲された監視単語に入れました。
しかし、投稿が検閲されたときに管理者に通知されないことに気づきました。理想的には、ユーザーが悪質な単語/フレーズを使用した回数をカウントして、不適切な投稿が多すぎる場合にサイレンスにできるようにしたいと考えています。
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の長さが同じではないと不平を言い続けています…これは、監視された単語によって見つかった結果を保存し、特に管理することがいかに難しいかを改めて認識させてくれます。
最終的にこれを洗練することはできましたか?
いや、マークダウン版とライブ版で検閲された単語を見つけるのが悪夢すぎただけで、(現時点では私たちの新しいプラットフォームでは) 目でスキャンする方が簡単だったと思います。もし他の誰かが方法を見つけたら、教えてください!