FT.SEARCH的结果默认是按照分数排序的吗?

问题描述 投票:0回答:1

根据FT.SEARCH

文档,它有一个
WITHSCORES
参数用于获取文档的内部分数,还有一个
SCORER
参数用于指定对文档进行评分的函数,例如默认的
TFIDF
对于文本(根据评分文档)。然而,它没有明确提到分数用于对文档进行排序,尽管在我的实验中结果似乎确实是按分数排序的。因此,我想知道按分数排序是否确实是默认行为?

FT.SEARCH
还有一个
SORTBY
参数,它按某些属性对结果进行排序。我想知道是否可以使用它来明确声明我要按文档的分数进行排序,而不是指定用于排序的属性?另一方面,如果对结果进行排序是默认行为,我想也应该可以禁用它?那该怎么办呢?因为它还提到了一个优化:

跳过排序器 - 当没有任何类型的排序时应用。查询达到 LIMIT 请求结果后即可返回。

redis redisearch
1个回答
0
投票

是的。

默认情况下,

FT.SEARCH
按文本分数对结果进行排序,并返回前 10 个。 您可以使用
LIMIT
选项设置另一个偏移或限制(默认相当于
LIMIT 0 10
)。 如果您想按其他内容排序,可以使用显式
SORTBY
选项。 FT.SEARCH 总是有一个排序器(除了优化之外,但逻辑上它有)并且没有办法没有一个。

FT.AGGREGATE
但是默认情况下没有任何类型的排序。您可以通过任何字段或查询相关值显式使用
SORTBY
。在最新的 2.10 版本中,您还可以使用
ADDSCORES
获取文本分数,然后按
__score

排序
© www.soinside.com 2019 - 2024. All rights reserved.