我们正在使用Weaviate为电子商务的结果服务。
我们的Weaviate数据库存储了我们销售的所有产品。
基于客户和搜索项,我们创建了一个向量,并使用它来查询数据库。这个属性称为search_engine_query_vector。
例如,如果客户有购买昂贵产品和搜索“电视”的习惯,那么系统很可能会产生一个向量,它“更接近”数据库中价格更高的电视机。因此,他们的第一页结果是最昂贵的电视。
虽然这是很好的,99%的时间,我们也希望ppl能够根据价格进行排序。
为此,我们将向Weaviate发送一个查询,在那里我们只返回接近向量的产品(假设这是所有的电视)。如下所示:
client.query.get("Product", ["sku", "responseBody", "_additional { certainty }",
"stores { ...on Store {storeId salesPrice additionalResponseBody}}"]).with_near_vector(
{"vector": search_engine_query_vector, "similarity": TV_CUTOFF})
.limit(10)
.sort_base_on_price()我的问题是,api中是否有类似于sort_base_on_price的功能?您可以假设price是架构中的数字字段。
发布于 2022-07-06 11:49:40
很高兴听到你和Weaviate合作开发电子商务解决方案。Weaviate在版本1.13中增加了排序功能的初始版本!
在Weaviate版本1.13.0中,我们还发布了引入此功能的python v3.5.0。您可以找到python 这里或其他客户端这里所需的方法文档!
对于用例,还可以在GraphQL中尝试以下Weaviate控制台查询
{
Get {
Product(nearVector :{
vector:[search_engine_query_vector],
certainty: TV_CUTOFF
}
sort:{
order:desc,
path:["price_field"]
}
limit: 10
) {
sku
responseBody
stores { ...on Store {
storeId
salesPrice
additionalResponseBody
}
_additional {
certainty
}
}
}
}https://stackoverflow.com/questions/72086700
复制相似问题