您可通过标量过滤器(Filter)在向量数据库中限定结果范围。
说明
标量过滤是通用检索能力,您可以通过在检索和聚合统计的相关接口中传入filter参数来启用标量过滤能力。
参数 | 类型 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|---|
filter | map | 否 | None | 过滤条件,详见 filter 表达式说明。
注意 filter的前提条件是:相应字段开启了标量索引。 |
算子 | 算子说明 | 示例 |
---|---|---|
must | 针对指定字段名生效,语义为必须在 [...] 之中,即 "must in"。 |
|
must_not | 针对指定字段名生效,语义为必须不在 [...] 之中,即 "must not in"。 |
|
range | 针对指定字段名生效,语义为必须在指定范围内。 |
|
range_out | 针对指定字段名生效,语义为必须在指定范围外。配置使用 |
|
and | 逻辑算子,针对逻辑查询需求,对多个条件取交集。 |
|
or | 逻辑算子,针对逻辑查询需求,对多个条件取并集。 |
|
// 获取指定索引,程序初始化时调用即可,无需重复调用
index, _ := service.GetIndex("go", "goIndex")
searchOption := vikingdb.NewSearchOptions()
.SetFilter(map[string]interface{}{"op": "range", "field": "price", "lt": 3.5})
res, err := index.Search(vikingdb.VectorOrder{Id: "111"}, searchOption)
if err != nil {
fmt.Println(err)
}
for _, item := range res {
fmt.Println(item)
}
Go 调用执行上面的任务,返回 List<DataObject> 。DataObject 实例包含的属性如下表所示。
属性 | 说明 |
---|---|
Id | 主键 id。 |
Fields | 请求返回中的 fields 字段,是具体的数据,map 类型。 |
Score | 表示找到的向量和输入的向量的匹配程度。 |