如何在 algolia rails 中设置 objectID 的值?

How can I set the value of objectID in algolia rails?

我在 rails 应用程序中使用 algolia gem。我目前正在将 3 种不同的模型合并到一个索引中,以合并搜索我们的案例研究、博客文章和视频。

我遇到了问题,因为索引一个模型会覆盖另一个模型中的对象,因为 Algolia 似乎使用 rails 生成的 ID 映射到 objectID 列。

posts.rb

algoliasearch auto_index: false, if: :open?, index_name: "combined_#{Rails.env}" do
    attribute :objectID do
      "p#{id}"
    end
end

video.rb 和 case_studies.rb

以同样的方式,我尝试为视频设置 attribute :objectID to "v#{id}",为案例研究设置 attribute :objectID to "c#{id}"

这种虚拟属性样式不起作用,所以我尝试在数据库上创建一个实际的字符串列并重新编制索引,但无济于事。

如果有人在这里有任何想法,我将不胜感激,我 运行 很低。

您可以在每个模型中使用 custom ObjectID

在你的模型中

def custom_algolia_id
  "v#{id}"
end

algoliasearch id: :custom_algolia_id do
  attribute :title, :length
end