Corrección de la búsqueda de Discourse

Estoy escribiendo un plugin que almacena datos adicionales para cada usuario (similar a discourse-user-notes, pero no solo para el personal) y me gustaría poder buscar en ellos.

Supongo que esto implica parchear algo en lib/search.rb. Sé que el plugin de búsqueda de Algolia sobrescribe lo que aparece en la ventana emergente del cuadro de búsqueda, pero idealmente, me gustaría que esto también afectara a la página de resultados real.

¿Alguien tiene alguna sugerencia sobre por dónde empezar?

Puedes ampliar la búsqueda desde tu plugin; por ejemplo, podrías agregar un filtro avanzado como este:

  require_dependency 'search'
  if Search.respond_to? :advanced_filter
    Search.advanced_filter(/with:video/) do |posts|
      posts.where("posts.cooked LIKE '%<video %'")
    end
  end

Lo anterior solo mostrará publicaciones que contengan videos cuando el cuadro de búsqueda incluya la palabra clave with:video. Consulta también el filtro avanzado de insignias para ver un ejemplo de una consulta de búsqueda que tiene en cuenta los datos del usuario.

Bien. ¿Añadir un filtro avanzado significa que estos resultados también aparecerán en una búsqueda general (sin filtro avanzado)?

Sí, puedes usar una palabra clave avanzada en la ventana emergente de búsqueda, así como en la búsqueda de página completa.

Realmente ya no necesitamos mantener esta protección; esa API ha estado en vigor durante mucho tiempo.

Sobre el tema, ¿crees que PluginStore escalará bien aquí? Imagino que esto llevará a muchas escaneos completos (en ausencia de un índice compatible con LIKE en las claves), ¿sería mejor crear una tabla 1 a 1 para los datos adicionales del usuario?

Evita PluginStore; implementa tablas para tu plugin.