cogdog
(Alan Levine)
2022 年 11 月 3 日午後 10:11
1
コミュニティユーザーの何人かから、Fediverseのユーザー名用のカスタムユーザープロファイルフィールドを追加してほしいという要望がありました。これは簡単に追加できます。
このフィールドを検索可能にする実験をしました。この仕組みを説明した投稿 を見つけましたが、私の現在のDiscourseのバージョン(最新)では、そのようなインターフェースは表示されません。クイック検索フィールド(値でラベル付けされている、それは良い)では結果が表示され、拡張検索では一致するユーザーが表示されます。
しかし…すべてのマッチを拾っているわけではありません。このカスタムフィールドに「mastodon」と入力しているユーザーが(私を含めて)少なくともあと3人います。インデックス作成に何らかの遅延があるのでしょうか?
また、このフィールドに何らかの値(例:すべてのユーザーにFediverseユーザー名を表示)を入力したすべてのユーザーのリストを生成する検索またはクエリを実行する方法を本当に探していました。これはカスタムクエリの仕事ですか?どのようにすればよいでしょうか?
SaraDev
(Sara Devlaeminck)
2022 年 11 月 4 日午前 12:33
2
これは、次のようなSQLクエリを使用してData Explorer Plugin で実行できます。
SELECT ucf.user_id,
ucf.value,
ucf.updated_at AS reltime$time
FROM user_custom_fields ucf
WHERE ucf.name = 'user_field_1'
AND ucf.value IS NOT NULL
ORDER BY ucf.updated_at DESC
ここで、'user_field_1' は、表示したいサイト上のカスタムユーザーフィールドになります。なお、Discourseでは、カスタマイズ → ユーザーフィールドページのフィールドのテキスト名ではなく、user_custom_fields テーブル内のカスタムユーザーフィールドの名前として user_field_1、user_field_2、user_field_3 などが使用されます。
サイト上のカスタムユーザーフィールドのすべての名前とその対応する user_field 番号のリストを取得したい場合は、次のようにします。
SELECT uf.id, uf.name
FROM user_fields uf
ここで、user_field のIDは、user_custom_fields テーブル内の user_field_X 名になります。
それを念頭に置くと、ユーザーフィールドが検索可能である限り、検索ウィンドウでユーザーフィールドを検索できない理由がわかりません。
高度な検索メニューを使用して、「ユーザー」を検索場所として選択し、同じ結果が得られるかどうかを確認してみてください。
「いいね!」 2
cogdog
(Alan Levine)
2022 年 11 月 4 日午後 7:27
3
アレックス、ありがとう。Data Explorer プラグインは素晴らしく機能しました(初めて使いました)。
User の下の検索は全く機能していません。ここの値は fediverse のユーザー名で、私の入力は
@cogdog@mastodon.social
ですが、「mastodon」という文字列で Users を検索しても結果が得られません。部分文字列マッチはしないのでしょうか?これはそれほど重要ではなく、このフィールドの検索可能フラグをオフにする可能性が高いです。このフィールドに値が入力されたすべてのユーザーを表示するユーザーアクセス可能な方法を提供できればと思っていました。空でないエントリを見つけるための一般的な検索オプションはありますか?
system
(system)
クローズされました:
2022 年 12 月 4 日午後 7:27
4
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.