Estou criando um plugin que armazena alguns dados adicionais para cada usuário (semelhante ao discourse-user-notes, mas não restrito apenas à equipe) e gostaria de poder pesquisar nesses dados.
Provavelmente, isso envolve fazer um patch em algo dentro de lib/search.rb. Sei que o plugin de busca Algolia substitui o que aparece na janela pop-up da caixa de pesquisa, mas idealmente, gostaria que isso também afetasse a página de resultados em si.
Você pode estender a busca a partir do seu plugin; por exemplo, você pode adicionar um filtro avançado assim:
require_dependency 'search'
if Search.respond_to? :advanced_filter
Search.advanced_filter(/with:video/) do |posts|
posts.where("posts.cooked LIKE '%<video %'")
end
end
O exemplo acima exibirá apenas posts que contêm vídeos quando a caixa de busca incluir a palavra-chave with:video. Consulte também o filtro avançado de emblemas para um exemplo de consulta de busca que leva em conta dados do usuário.
Sobre o assunto, o PluginStore escalará bem aqui? Imagino que isso levará a muitas varreduras completas (na ausência de um índice amigável a LIKE nas chaves), então seria melhor criar uma tabela 1-1 para os dados extras do usuário?