Algolia即时排名

who*_*tsb 1 algolia

我有成千上万的音乐曲目索引.为了搜索,我想通过曲目标题升序返回曲目.

我还有一个created_at字段,它是我将曲目添加到库的日期时间.我可以动态改变排名吗?

因此,对于我在查询之前的常规艺术家/标题搜索,我会运行:

index.setSettings({
  ranking: [
    "asc(title)",
    "asc(artist)"
  ]
});
Run Code Online (Sandbox Code Playgroud)

然后,当我想要返回我最近添加到数据库的轨道时,我会运行:

index.setSettings({
  ranking: [
    "desc(created_at)",
    "asc(title)",
    "asc(artist)"
  ]
});
Run Code Online (Sandbox Code Playgroud)

我的问题是:这是表现好吗?对每个查询执行此操作是否有任何不足之处?

感谢您的建议!

Jul*_*eau 7

Algolia在索引时排序数据,而不是查询时间.这就是你必须使用这种方法的原因setSettings.如果这样做,每次设置新设置时都会使用所有数据.

解决方案是使用副本.它们是主索引的副本,排序方式不同.

您可以在此处找到相关文档:https: //www.algolia.com/doc/guides/relevance/sorting/#multiple-sorting-strategies

  • 还值得一提的是,对于每个副本,您将相同数量的记录添加到配额中-因此,实际上,通过创建15个副本-您将记录使用量乘以15倍-如果必须对许多索引执行此操作,则代价可能会很高。 (2认同)
  • 这是迄今为止 Algolia 最大的缺点之一。简单的排序可能会使您的记录使用量猛增,并给组织带来沉重的成本。是的,我们可以说构建 Elasticsearch 系统的成本要高得多,但对于这样一个常见且简单的用例,我可以说这是典型的金钱陷阱。 (2认同)