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

Should I use one index or multiple ones in Algolia?

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

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

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

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

提前致谢。

您只能使用一个索引。使用 before_action :find_client 方法,您的客户可以通过 client_id

等参数找到

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

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

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

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

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

  • 如果需要不同的索引配置(错字容忍,同义词)
  • 分开的分析
  • 创建不同的 API 密钥的可能性 每个索引(见文档)

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