文档有效负载

有效负载支持(已弃用)

警告
有效负载功能在 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,有效载荷将跟随分数。

RATE THIS PAGE
Back to top ↑