Я использую модуль Trigram (pg_trgm) для Postgres в приложении на Rails 5 для текстового поиска. Мне удалось успешно найти удовлетворительные результаты, используя следующий вызов, чтобы найти limit количество записей, имена которых похожи на query :
def self.glance(query, limit = 10)
find_by_sql(['select *, name <-> ? as confidence from studies order by confidence limit ?', query, limit])
end
Теперь я хотел бы расширить результаты, включив в них значение функции схожесть для каждой записи и целевой запрос для отображения.
Меня считают, что я должен установить область (или метод класса), где я могу сделать параметризованный вызов оператора расстояния (name <->?), А затем вернуть значение, как если бы оно было атрибутом в модель базы данных.
Могу ли я получить рекомендацию относительно наилучшей практики для этого? Спасибо.