我在我的rails应用程序中使用algolia gem。我目前正在将3种不同的模型合并为一个索引,以便对我们的案例研究,博客文章和视频进行综合搜索。
我遇到了麻烦,索引一个模型将覆盖另一个模型中的对象,因为Algolia似乎使用rails生成的ID映射到objectID列。
algoliasearch auto_index: false, if: :open?, index_name: "combined_#{Rails.env}" do
attribute :objectID do
"p#{id}"
end
end
以同样的方式,我尝试为视频设置attribute :objectID to "v#{id}"
,并为案例研究设置attribute :objectID to "c#{id}"
这个虚拟属性样式不起作用,所以我试图在db上创建一个实际的字符串列并重新索引这种方式无济于事。
如果有人在这里有任何想法,我会非常感激,而且我一直在低迷。
答案 0 :(得分:3)
您可以在每个模型中使用custom ObjectID。
在您的模型中
def custom_algolia_id
"v#{id}"
end
algoliasearch id: :custom_algolia_id do
attribute :title, :length
end