我应该在Algolia中使用一个索引还是多个索引?

时间:2017-02-21 08:50:04

标签: ruby-on-rails algolia

我正在构建一个电子商务客户端集成到其网站中的产品搜索小部件。假设我有100个客户,每个客户有1000个产品。

特定客户网站上的访问者只能搜索该客户的产品。

鉴于产品在客户之间共享完全相同的属性(ID,名称,价格等):

我应该为每个客户使用单独的索引,还是使用一个索引来存储所有客户端'产品并以某种方式将每个产品与客户联系起来?

提前致谢。

2 个答案:

答案 0 :(得分:7)

我强烈建议您为每个客户创建一个单独的索引,因为它允许您拥有

  • 根据需要使用不同的索引配置(错字容差,同义词)
  • 分离的分析
  • 创建不同API密钥的可能性 每个索引(见文档)

如果采用其他方法,情况并非如此。

答案 1 :(得分:1)

您只能使用一个索引。使用before_action :find_client方法,通过诸如client_id

之类的参数找到客户端

所以在你的控制器的私人部分添加

private 
def find_client
 @client = Client.find(params[:client_id]) 
end 

并确保用户只能看到此客户的产品。为此,您需要在访问索引页时在params中传递client_id。

根据您的应用程序在索引操作中的结构,您需要过滤客户端的产品。客户端由find_client方法设置的位置。