我有成千上万首音乐曲目的索引。为了搜索,我想通过曲目标题升序返回曲目。
我还有created_at
字段,这是我将曲目添加到库的日期时间。我可以动态改变排名吗?
因此,对于我在查询之前的常规艺术家/标题搜索,我会运行:
index.setSettings({
ranking: [
"asc(title)",
"asc(artist)"
]
});
然后当我想要返回我最近添加到数据库中的曲目时,我会运行:
index.setSettings({
ranking: [
"desc(created_at)",
"asc(title)",
"asc(artist)"
]
});
我的问题是:这是否具有表现力?对每个查询执行此操作是否有任何不足之处?
感谢您的建议!
答案 0 :(得分:6)
Algolia在索引时排序数据,而不是查询时间。这就是您必须使用setSettings
方法的原因。如果这样做,每次设置新设置时都会使用所有数据。
解决方案是使用副本。它们是主索引的副本,排序方式不同。
您可以在此处找到相关文档: https://www.algolia.com/doc/guides/relevance/sorting/#multiple-sorting-strategies