文档有效负载
有效负载支持(已弃用)
警告
有效负载功能在 2.0 中已弃用通常,Redis Stack 将文档存储为哈希或 JSON。但是,如果您想访问一些数据以用于聚合或评分功能,Redis 可以将这些数据存储为内联有效负载。这将允许我们以非常低的成本评估文档的属性以进行评分。
由于评分功能已经可以访问包含文档标志和分数的 DocumentMetaData,因此 Redis 可以添加可以在运行时评估的自定义有效负载。
有效负载不会被索引,也不会被引擎以任何方式处理。它们仅仅是为了在查询时评估它们,以及选择性地检索它们。它们可以是 JSON 对象、字符串,或者更优的是,如果您对快速评估感兴趣,可以是某种类型的二进制编码数据,这种数据可以快速解码。
在查询时评估有效负载
在实现评分功能时,公开的函数签名为
double (*ScoringFunction)(DocumentMetadata *dmd, IndexResult *h);
注意
目前,评分功能无法动态添加,需要分叉引擎并替换它们。DocumentMetaData 包含一些字段,其中一个字段是有效负载。它包装一个具有任意长度的简单字节数组
typedef struct {
char *data,
uint32_t len;
} DocumentPayload;
如果没有为文档设置有效负载,它将只是 NULL。如果不是,您可以继续解码它。建议在其中编码有关有效负载的一些元数据,例如一个前导版本号等。
从文档中检索有效负载
在搜索时,可以向引擎请求文档有效载荷。
这可以通过在 FT.SEARCH
中添加关键字 WITHPAYLOADS
来实现。
如果设置了 WITHPAYLOADS
,有效载荷将跟随返回结果中的文档 ID。如果还设置了 WITHSCORES
,有效载荷将跟随分数。