2

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

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

帖子.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}"为案例研究设置

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

如果有人在这里有任何想法,我将不胜感激,但我的能力不足。

4

1 回答 1

3

您可以在每个模型中使用自定义 ObjectID 。

在你的模型里面

def custom_algolia_id
  "v#{id}"
end

algoliasearch id: :custom_algolia_id do
  attribute :title, :length
end
于 2015-07-30T22:43:28.650 回答