各ユーザーに追加データを保存するプラグイン(staff 専用ではなく discourse-user-notes に似た機能)を作成しており、これを検索できるようにしたいと考えています。
おそらく lib/search.rb の何らかの箇所をパッチする必要があるのでしょう。Algolia 検索プラグインは検索ボックスの ポップアップ に表示される内容をオーバーライドすることは承知していますが、理想を言えば、実際の結果ページにも影響させたいと考えています。
どこから着手すべきか、ご提案があればお願いいたします。
pmusaraj
(Penar Musaraj)
2020 年 7 月 8 日午後 6:24
2
プラグインから検索機能を拡張できます。例えば、以下のように高度なフィルターを追加できます:
require_dependency 'search'
if Search.respond_to? :advanced_filter
Search.advanced_filter(/with:video/) do |posts|
posts.where("posts.cooked LIKE '%<video %'")
end
end
上記の設定では、検索ボックスに with:video キーワードが含まれている場合のみ、動画を含む投稿が表示されます。ユーザーデータを考慮した検索クエリの例については、バッジの高度なフィルター も参照してください。
なるほど。高度なフィルターを追加すると、これらの結果は一般(高度なフィルターを使用しない)検索にも表示されるのでしょうか?
pmusaraj
(Penar Musaraj)
2020 年 7 月 8 日午後 7:20
4
はい、検索ポップアップでもフルページ検索でも、高度なキーワードを使用できます。
sam
(Sam Saffron)
2020 年 7 月 9 日午前 7:53
5
もうこの保護は必要ありません。その API は非常に以前から存在しています。
その件について、PluginStore はここで適切に拡張性を持つかしら?キーに LIKE 検索に優しいインデックスがない場合、フルスキャンが多数発生すると思うのですが、追加のユーザーデータ用に 1 対 1 のテーブルを作成する方がよいでしょうか?
sam
(Sam Saffron)
2020 年 7 月 9 日午前 8:53
7
PluginStore は避けて、プラグイン用にテーブルを展開してください。