WITHSCORES
参数用于获取文档的内部分数,还有一个SCORER
参数用于指定对文档进行评分的函数,例如默认的TFIDF
对于文本(根据评分文档)。然而,它没有明确提到分数用于对文档进行排序,尽管在我的实验中结果似乎确实是按分数排序的。因此,我想知道按分数排序是否确实是默认行为?
FT.SEARCH
还有一个 SORTBY
参数,它按某些属性对结果进行排序。我想知道是否可以使用它来明确声明我要按文档的分数进行排序,而不是指定用于排序的属性?另一方面,如果对结果进行排序是默认行为,我想也应该可以禁用它?那该怎么办呢?因为它还提到了一个优化:
跳过排序器 - 当没有任何类型的排序时应用。查询达到 LIMIT 请求结果后即可返回。
是的。
默认情况下,
FT.SEARCH
按文本分数对结果进行排序,并返回前 10 个。
您可以使用 LIMIT
选项设置另一个偏移或限制(默认相当于 LIMIT 0 10
)。
如果您想按其他内容排序,可以使用显式 SORTBY
选项。
FT.SEARCH 总是有一个排序器(除了优化之外,但逻辑上它有)并且没有办法没有一个。
FT.AGGREGATE
但是默认情况下没有任何类型的排序。您可以通过任何字段或查询相关值显式使用 SORTBY
。在最新的 2.10 版本中,您还可以使用 ADDSCORES
获取文本分数,然后按 __score
排序