文档有效载荷

有效载荷支持(已弃用)

警告
有效载荷功能在 2.0 版本中已弃用

通常,Redis 开源版将文档存储为 hashes 或 JSON。但如果您想访问某些数据用于聚合或评分函数,Redis 可以将这些数据存储为内联有效载荷。这使得我们能够以非常低的成本评估文档属性,用于评分目的。

由于评分函数已经可以访问 DocumentMetaData,它包含文档标志和评分,Redis 可以添加可在运行时评估的自定义有效载荷。

有效载荷未被索引,并且引擎不会以任何方式处理它们。它们仅用于在查询时评估,并可选择地检索。它们可以是 JSON 对象、字符串,或者,如果您关注快速评估,则最好是某种可快速解码的二进制编码数据。

在查询时评估有效载荷

在实现评分函数时,暴露的函数签名是

double (*ScoringFunction)(DocumentMetadata *dmd, IndexResult *h);
注意
当前,评分函数无法动态添加,并且需要 fork 引擎并替换它们。

DocumentMetaData 包含几个字段,其中一个就是有效载荷。它封装了一个任意长度的简单字节数组

typedef struct  {
    char *data,
    uint32_t len;
} DocumentPayload;

如果文档没有设置有效载荷,它就是 NULL。如果不是,您可以继续并解码它。建议在有效载荷内部编码一些关于它的元数据,例如前导版本号等。

从文档中检索有效载荷

搜索时,可以向引擎请求文档有效载荷。

通过将关键字 WITHPAYLOADS 添加到 FT.SEARCH 来完成。

如果设置了 WITHPAYLOADS,在返回结果中,有效载荷紧跟在文档 ID 后面。如果也设置了 WITHSCORES,有效载荷紧跟在评分后面。

评价本页
返回顶部 ↑