我在 Rails 5 应用程序中为 Postgres 使用 Trigram 模块 (pg_trgm) 进行文本搜索。我已经能够使用以下调用成功找到令人满意的结果,以查找名称与查询相似的记录的限制数量:
def self.glance(query, limit = 10)
find_by_sql(['select *, name <-> ? as confidence from studies order by confidence limit ?', query, limit])
end
我现在想扩展结果以包括每条记录的相似性函数的值和用于显示 的目标查询。
我相信我应该设置一个范围(或类方法),我可以在其中对距离运算符(名称 <-> ?)进行参数化调用,然后返回值,就好像它是数据库模型中的一个属性一样。
我可以就执行此操作的最佳做法提出建议吗?谢谢你。