PGSearch Gem -- 是否可以通过 :against 元素 group/weight?

PGSearch Gem -- is it possible to group/weight by the :against elements?

我正在使用 PG 搜索来允许用户输入查询并搜索模型上的几个不同属性。我有以下型号;

class Movie < ApplicationRecord
  include PgSearch::Model

  pg_search_scope :search_for,
                  against: { title: 'A', short_description: 'B', long_description: 'C' },
                  using: { tsearch: { prefix: true } }

end

这意味着你可以做类似的事情;

Movie.search_for("person") 并且它会找到标题中包含单词 person、short_description 和详细描述的结果。但是,它似乎没有以任何逻辑方式分组。结果感觉非常随机。

最终我希望它按反对散列进行分组。因此首先是标题,然后是简短描述,然后是详细描述。意思是所有标题中有“person”的标题都在列表的顶部,然后是 short_description,然后是长描述,而那些有多个查询的标题排名更高。所以如果查询在标题和简短描述中,它将位于标题中的上方。

或者如果它在简短描述中出现了 10 次但根本没有出现在标题中.. 标题中带有它的应该仍然更高.. 某种加权系统?

如何做到这一点?

谢谢!

您的代码示例按反对元素加权,标题第一,short_description 第二,等等。

您应该考虑实施 ranked_by 以进一步将结果调整为您想要的输出。

pg_search_rank 方法对调试特别有帮助。