Je suis en train d’écrire un plugin qui stocke des données supplémentaires pour chaque utilisateur (similaire à discourse-user-notes, mais pas réservé uniquement au personnel), et j’aimerais pouvoir effectuer des recherches sur ces données.
J’imagine que cela implique de modifier quelque chose dans lib/search.rb. Je sais que le plugin de recherche Algolia remplace ce qui apparaît dans la fenêtre contextuelle de la boîte de recherche, mais idéalement, j’aimerais que cela affecte également la page des résultats elle-même.
Auriez-vous des suggestions sur par où commencer ?
Vous pouvez étendre la recherche depuis votre plugin. Par exemple, vous pouvez ajouter un filtre avancé comme ceci :
require_dependency 'search'
if Search.respond_to? :advanced_filter
Search.advanced_filter(/with:video/) do |posts|
posts.where("posts.cooked LIKE '%<video %'")
end
end
Le code ci-dessus n’affichera que les publications contenant des vidéos lorsque la boîte de recherche inclut le mot-clé with:video. Consultez également le filtre avancé des badges pour un exemple de requête de recherche qui prend en compte les données utilisateur.
Sur ce sujet, PluginStore s’adaptera-t-il bien ici ? J’imagine que cela entraînera de nombreux scans complets (en l’absence d’index compatible LIKE sur les clés), donc ne serait-il pas préférable de créer une table en correspondance 1-1 pour les données utilisateur supplémentaires ?