Discourseのトピックリストのフィルタリング

:bookmark: このガイドでは、Discourse の高度なトピックフィルタリングシステムについて、完全なクエリ言語構文、フィルタオプション、および /filter ルートの効果的な使用方法を説明します。

:person_raising_hand: 必要なユーザーレベル:全ユーザー

Discourse のトピックフィルタ クエリ言語の使用

Discourse のトピックフィルタは、複数の基準に基づいてトピックを検索するための強力なクエリ言語を提供します。この高度な検索インターフェイスを使用すると、フィルタを組み合わせ、結果を並べ替え、フォーラム上のあらゆるコンテンツに対して正確なクエリを作成できます。

フィルタへのアクセス

トピックフィルタには、次の 2 つの方法でアクセスできます。

直接 URL アクセス:
Discourse インスタンスで /filter に移動します (例: https://meta.discourse.org/filter)

サイドバーナビゲーション:
サイドバーの「その他」をクリックし、フィルタオプションを選択します。

フィルタインターフェイスには、入力中に利用可能なフィルタと値を提案するインテリジェントなオートコンプリートシステムが含まれています。

基本的なクエリ構文

フィルタは、次の形式の構造化構文を使用します。

filter-name:value

複数のフィルタを組み合わせる:

category:support status:open created-after:2023-01-01

通常の検索語を含める:

category:support ssl certificate error

これにより、「ssl certificate error」という単語を含む「support」カテゴリのトピックが検索されます。

カテゴリフィルタ

category: (エイリアス: categories:)

カテゴリでトピックをフィルタリングします。

基本的な使用法:

category:support
category:dev,support          # dev または support カテゴリのトピック
category:documentation:admins # documentation の admins サブカテゴリのトピック

高度なプレフィックス:

  • = - サブカテゴリなしのカテゴリ: =category:general
  • - - カテゴリを除外: -category:off-topic
  • -= - サブカテゴリなしのカテゴリを除外: -=category:meta

例:

category:bug,feature          # bug または feature カテゴリを含める (サブカテゴリあり)
=category:bug,feature         # bug または feature カテゴリを含める (サブカテゴリなし)
-category:bug,feature         # bug または feature カテゴリを除外 (サブカテゴリあり)
-=category:bug,feature        # bug または feature カテゴリを除外 (サブカテゴリなし)

タグフィルタ

tag: (エイリアス: tags:)

タグでトピックをフィルタリングします (タグ付けが有効になっている必要があります)。

基本的な使用法:

tag:bug
tag:feature,enhancement       # feature または enhancement タグが付いたトピック
tag:bug+urgent               # bug と urgent の両方のタグが付いたトピック

除外:

-tag:solved                  # solved タグが付いたトピックを除外
-tag:bug+urgent              # bug と urgent の両方のタグが付いたトピックを除外
-tag:bug,urgent              # bug または urgent タグが付いたトピックを除外

tag_group:

タググループでフィルタリングします。

基本的な使用法:

tag_group:moderation
-tag_group:staff-only        # staff-only グループのタグが付いたトピックを除外

日付フィルタ

すべての日付フィルタは、特定の日付 (YYYY-MM-DD) と相対的な日数の両方をサポートします。

アクティビティ日付

  • activity-before: - 日付より前に最後にアクティブになったトピック
  • activity-after: - 日付より後に最後にアクティブになったトピック

作成日

  • created-before: - 日付より前に作成されたトピック
  • created-after: - 日付より後に作成されたトピック

最新の投稿日付

  • latest-post-before: - 日付より前に最新の投稿があったトピック
  • latest-post-after: - 日付より後に最新の投稿があったトピック

日付形式の例:

created-after:2023-12-25     # 特定の日付 (YYYY-MM-DD)
created-after:30             # 30 日前
created-after:1              # 昨日
created-after:0              # 今日

クイック提案:

  • 1 - 昨日
  • 7 - 先週
  • 30 - 先月
  • 365 - 昨年

ユーザーフィルタ

created-by:

トピック作成者でフィルタリングします。

基本的な使用法:

created-by:username
created-by:user1,user2       # user1 または user2 によるトピック
created-by:@username         # @ プレフィックスはオプションです

個人用フィルタ (認証済みユーザーのみ)

in:

トピックに対する個人の関係でフィルタリングします。

利用可能なオプション:

  • in:pinned - あなたのためにピン留めされたトピック
  • in:bookmarked - あなたがブックマークしたトピック
  • in:watching - あなたがウォッチしているトピック
  • in:tracking - あなたがトラッキングしているトピック
  • in:muted - あなたがミュートしたトピック
  • in:normal - 通常の通知レベルのトピック
  • in:watching_first_post - 最初の投稿のみをウォッチしているトピック

例:

in:bookmarked category:support
in:watching,tracking         # あなたがウォッチしている、またはトラッキングしているトピック

数値フィルタ

いいねフィルタ

  • likes-min: - すべての投稿の合計いいね数の最小値
  • likes-max: - すべての投稿の合計いいね数の最大値
  • likes-op-min: - 最初の投稿のいいね数の最小値
  • likes-op-max: - 最初の投稿のいいね数の最大値

投稿数フィルタ

  • posts-min: - 最小投稿数
  • posts-max: - 最大投稿数

参加者フィルタ

  • posters-min: - 最小参加者数
  • posters-max: - 最大参加者数

閲覧数フィルタ

  • views-min: - 最小閲覧数
  • views-max: - 最大閲覧数

例:

likes-min:10                 # 少なくとも 10 いいねが付いたトピック
posts-min:5 posts-max:20     # 5~20 件の投稿があるトピック
views-min:100 likes-op-min:5 # エンゲージメントの高い最初の投稿がある人気のトピック

ステータスフィルタ

status:

トピックのステータスでフィルタリングします。

利用可能なステータス:

  • status:open - 開いているトピック (クローズまたはアーカイブされていない)
  • status:closed - クローズされたトピック
  • status:archived - アーカイブされたトピック
  • status:listed - リストされた (表示されている) トピック
  • status:unlisted - リストされていないトピック
  • status:deleted - 削除されたトピック (権限が必要)
  • status:public - 公開トピック (制限のないカテゴリ)

プラグイン固有のステータス:

  • status:solved - 解決済みのトピック (Solved プラグインを使用)
  • status:unsolved - 未解決のトピック (Solved プラグインを使用)

例:

status:open category:support
status:closed created-after:30

並べ替えオプション

order:

さまざまな基準で結果を並べ替えます。

利用可能な並べ替え:

  • order:activity - 最新のアクティビティ (デフォルト、降順)
  • order:activity-asc - 最古のアクティビティから
  • order:created - 作成日 (新しい順)
  • order:created-asc - 古い順
  • order:latest-post - 最新の投稿日
  • order:latest-post-asc - 最古の最新投稿
  • order:likes - すべての投稿の合計いいね数が多い順
  • order:likes-asc - いいね数が少ない順
  • order:likes-op - 最初の投稿のいいね数が多い順
  • order:likes-op-asc - 最初の投稿のいいね数が少ない順
  • order:posters - 参加者が多い順
  • order:posters-asc - 参加者が少ない順
  • order:title - タイトルでアルファベット順
  • order:title-asc - タイトルで逆アルファベット順
  • order:views - 閲覧数が多い順
  • order:views-asc - 閲覧数が少ない順
  • order:category - カテゴリ名
  • order:category-asc - カテゴリ名の逆順
  • order:read - 最後に読んだ日付 (認証済みユーザー)
  • order:read-asc - 最古の読み込み順

高度な例

人気の最近のディスカッションを見つける:

created-after:7 likes-min:10 order:likes

注意が必要なサポート トピック:

category:support status:open posts-max:3 created-after:7

ブックマークした開発トピック:

category:dev in:bookmarked order:activity

解決済みのバグレポートを除外する:

category:bug -tag:solved status:open order:created

特定のユーザーからのエンゲージメントの高いトピック:

created-by:admin,moderator likes-min:5 views-min:100

最近のリストされていないトピック (スタッフのみ):

status:unlisted created-after:30 order:created

オートコンプリート機能

フィルタ入力には、インテリジェントな提案が提供されます。

  1. フィルタの提案 - 入力中に利用可能なフィルタを表示します
  2. カテゴリのオートコンプリート - 名前またはスラッグでカテゴリを提案します
  3. タグのオートコンプリート - 投稿数とともにタグを提案します
  4. ユーザー名のオートコンプリート - 表示名とともにユーザー名を提案します
  5. 日付の提案 - クイック日付オプション (昨日、先週など) を提供します
  6. プレフィックスのサポート - カテゴリとタグのプレフィックスオプションを表示します

ヒントとベストプラクティス

  1. オートコンプリートを使用する - フィルタインターフェイスは、入力中にインテリジェントな提案を提供します
  2. フィルタを組み合わせる - さまざまなフィルタタイプを組み合わせて、正確な結果を得ます
  3. フィルタ URL を共有する - フィルタ URL は共有可能です。URL をコピーして検索を共有します
  4. サイドバーに便利なフィルタを追加する - フィルタ URL をサイドバーに追加して簡単にアクセスできるようにします
  5. 除外を使用する - - プレフィックスを使用して、不要な結果を除外します
  6. 日付のショートカット - 相対日付に数値を指定します (30 = 30 日前)
  7. キーボードナビゲーション - 矢印キーで提案をナビゲートし、Tab/Enter で選択します

カスタムサイドバーリンクの作成

フィルタリンクをカスタムリンクとしてサイドバーに追加できます。

  1. サイドバー設定に移動します
  2. フィルタ URL (例: /filter?q=category:support status:open) を持つカスタムリンクを追加します
  3. 「Open Support Topics」のような説明的な名前を付けます

技術的な注意点

  • フィルタは、キーワード検索とフィルタを組み合わせて全文検索を使用します
  • キーワード検索には、最小検索語長が適用されます
  • 結果は権限を認識します - アクセスできるトピックのみが表示されます
  • フィルタクエリは、パフォーマンスのためにサーバーサイドで処理されます
  • この機能は、カスタムフィルタ用のプラグイン拡張をサポートします

追加リソース

「いいね!」 11

3件の投稿が新しいトピックに分割されました:トピックフィルターのビルドワンボックスサポート

これは可能ですか? カテゴリで最初の投稿のみをウォッチできることは知っていますが、トピックではどのように機能しますか?

「いいね!」 3

おそらく明確化が必要ですが、まず最初に視聴するカテゴリ内のすべてのトピックを見つけ、更新されると思います。

「いいね!」 2

クラシックな未読/新規フィルターと組み合わせる方法はありますか?

「いいね!」 2

ハッキーなURLだと思いますが、ステータス:未読投稿やトピックのサポートは明日追加できます。それほど難しくありません。

「いいね!」 3

ブックマークやトラッキングのような個人的なフィルターとしては in: の方が良いと思います。ステータスのものはトピックのステータスを指します。

watching は、自分がウォッチしているカテゴリのすべてのトピックではなく、自分がウォッチしているすべてのトピックを返すものだと期待しています。それは間違った仮定でしょうか?他のステータスがトピックを指すのに対し、watching first post がカテゴリを指すのであれば、混乱します。

「いいね!」 2

この監視セマンティクスには別のオペレーターが必要になる場合があります。

in に同意します。複数の in 句をサポートするために内部を少し変更する必要があるかもしれません。

まだ表示していないトピックや返信していないトピックでフィルターする方法があれば嬉しいです!

可能でしょうか?

例えば、「紹介カテゴリでまだ返信していない投稿」というフィルターです。

「いいね!」 2

投稿:

in:unseen category:welcome -user:shauny

未読を気にしない場合でも、次のように使用できます。

category:welcome -user:shauny

検索のように in:first のようなサポートはありますか?よろしくお願いします。

どのように機能するか、どのように機能するかをどのように見ますか?

例えば、検索を使用するのではなく、特定のキーワードを持つすべてのトピックを表示して非表示にする方法です。

これはすでに機能しています。

https://meta.discourse.org/filter?q=glitchy%20category%3Abug

これも同様です。

https://meta.discourse.org/filter?q=glitchy%20category%3Abug%20f

しかし、in:first のようなフィルターで処理されない他のキーワードがある場合、それを検索にパイプできると思います。

「いいね!」 1

なるほど、f は最初の投稿でそれを検索するのですね。ドキュメントには見つからなかったので、こちら で探さなければなりませんでした。ありがとうございます!

「いいね!」 1

「トピックタイマーがクローズに設定されていない」または「最後の返信後にクローズするようにトピックタイマーが設定されていない」というフィルターが見つかりません。そのようなものは存在し、私が見つけられていないだけでしょうか?

私は、メタのサポートに関するトピックを、解決されないまま古くなってきたものをトリアージするために、サイドバーからリンクされたフィルターを使用しています。

現在のフィルターはこちらです。

category:support status:open status:unsolved activity-before:7 assigned:nobody

これはかなりうまく機能しますが、リストに表示されるトピックの中には、トピックタイマーを設定したものの、リストから除外したいものがあります。