下载
中文
注册

SearchWithExtraVal

API定义

APP_ERROR SearchWithExtraVal(uint32_t count, const void *features, const AttrFilter *attrFilter, bool shareAttrFilter, uint32_t topk, int64_t *labels, float *distances, uint32_t *validNums, const ExtraValFilter *extraValFilter, bool enableTimeFilter = true);

功能描述

计算输入特征和经过AttrFilter和ExtraValFilter过滤后的底库向量的距离并将距离进行TopK排序,返回对应的距离和下标。

输入

uint32_t count:待比较的特征数量。

const void *features:待比较的特征,汉明距离为uint8_t类型的数据,Int8Flat为int8_t类型;Fp16Flat距离为float类型。当前仅支持汉明距离。

const AttrFilter *attrFilter:属性过滤信息,具体请参见AttrFilter

bool shareAttrFilter:附加属性暂仅支持“false”,不同query非共享一个mask。

uint32_t topk:计算余弦距离后需要保存的TopK大小。

const ExtraValFilter *extraValFilter:附加属性过滤信息,具体请见ExtraValFilter

bool enableTimeFilter:时间戳属性过滤开关,默认为“true”,当enableTimeFilter = false时,不进行对时间戳属性的过滤。

输出

uint32_t *validNums:每个query向量经过比对后得到的有效结果个数。

int64_t *labels:TopK特征的Label。

float *distances:TopK特征的距离。

返回值

APP_ERROR:调用返回状态,具体请参见接口调用返回值参考

约束说明

  • “count”取值在[1, 10240]区间。
  • “features”长度为count * 向量维度dim,否则可能出现越界读写的错误并引起程序崩溃。
  • “attrFilter”shareAttrFilter为true时,长度为1;当shareAttrFilter为false时,长度为count,否则可能出现越界读写的错误并引起程序崩溃。
  • “topk”取值在[1, 100000]区间。
  • “labels”长度为count * topk,否则可能出现越界读写的错误并引起程序崩溃。
  • “distances”长度为count * topk,否则可能出现越界读写的错误并引起程序崩溃。
  • “validNums”长度为count,否则可能出现越界读写的错误并引起程序崩溃。
  • “extraValFilter”取值为空指针或者长度为count,否则可能出现越界读写的错误并引起程序崩溃。

SearchWithExtraVal不能与Search接口混用。