按索引字段排序¶
从RedSearch 0.15开始,可以绕过评分功能机制,直接根据不同文档属性(字段)的值对搜索结果排序,即使查询不使用排序字段。例如,您可以搜索名字并按姓氏排序。
声明可排序字段¶
使用创建索引时创建
,你可以申报正文
和数字的
待售物业可恶的
. 当属性是可排序的时,我们可以稍后决定按其值对结果排序。例如,在以下模式中:
>FT.CREATE users SCHEMA first_name TEXT last_name TEXT可排序年龄数字可排序
田野姓
和年龄
是可以排序的,但是名字
不是。这意味着我们可以按名字和/或姓氏进行搜索,并按姓氏或年龄进行排序。
关于可排序文本字段的说明¶
在当前的实现中,当声明一个可排序字段时,其内容会被复制到索引中的一个特殊位置,以便在排序时快速访问。这意味着使长文本字段可排序非常昂贵,您应该小心使用。
标准化(UNF选项)¶
默认情况下,文本字段在存储以进行排序时以Unicode安全的方式进行规范化和小写。这意味着美国
和美国
在排序方面被认为是相等的。
使用参数UNF(非规范化形式)可以禁用规范化并保留值的原始形式。所以,,美国
将在之前到达美国
.
指定排序¶
如果索引包含可排序字段,则可以添加肮脏的
参数添加到搜索请求(在查询体外部),并按其对结果排序。这会覆盖计分功能机制,且两者不能结合。如果带芯
与一起指定肮脏的
,返回的分数只是每个结果在结果集中的相对位置。
的语法肮脏的
是:
排序方式{field_name}[ASC|DESC]
字段名称必须是架构中定义的可排序字段。
ASC
意味着顺序将上升,描述
它会下降。默认顺序是
ASC
除非另有规定。
快速示例¶
>英尺.创造使用者模式名字正文可恶的姓正文年龄数字的可恶的#添加一些使用者>英尺.添加使用者用户11领域名字“爱丽丝”姓“琼斯”年龄35>英尺.添加使用者用户21领域名字“鲍勃”姓“琼斯”年龄36#搜索虽然分类#搜索通过最后的名称和分类通过第一名称>英尺.搜寻使用者“@姓:琼斯”肮脏的名字描述#搜索通过二者都第一和最后的名称,和分类通过年龄>英尺.搜寻使用者“爱丽丝·琼斯”肮脏的年龄ASC