vespa - 电子商务和 Vespa : filtering customer's wishlist

标签 vespa

假设一个电子商务网站具有愿望 list 功能。一些用户将很多产品列入心愿单(数量达到数万种)。产品总量以百万计。我们希望实现客户可以像在目录中一样过滤这些产品的功能。

当我们考虑使用 Elasticsearch 来实现这一点时,我们发现最好的方法是使用 terms lookup 。就像,我们为每个用户的愿望 list 创建一个文档,然后使用该文档过滤出我们需要的产品。之后,所有过滤/等等都会定期完成。这里的问题是 Elasticsearch 无法正确对这些产品进行排序 - 即文档如何指定它,因为我们想按愿望 list 时间排序。

就在这时,我决定研究 Vespa。但在阅读文档后,我仍然不知道实现此目的的最佳方法是什么。对于我受 RDBMS 感染的头脑来说,这看起来像是一个需要“加入”的问题。 :)

数据的基数如下:

  • 数百万种产品
  • 数十万用户
  • 数以万计的心愿单商品

那么......有什么想法如何实现或指导阅读什么内容?

最佳答案

在 Vespa 中,您需要两种文档类型(如果您想在 Vespa 中存储愿望 list ,也就是说,这不是必需的)

  • 使用 Vespa 的 get api 从 Vespa 或从其他存储解决方案检索给定用户的举报列表。
  • 使用 DotProductItem 通过产品 ID 字段以及排名配置文件进行检索和排名。
/search/?yq=select * from products where dotProduct(product_id, {"a":3, "b":2});&ranking=wishlist&hits=10

在这种情况下,a 是愿望 list 中比 b 更新的产品。与之相匹配的排名配置文件:

rank-profile wishlist {
  first-phase {
    expression:rawScore(product_id)
  }
}

您还可以使用 WAND 来加快搜索速度,并仅检索愿望列表中最新/排名靠前的点击。上面的示例检索所有并对所有进行排序。

查看

关于vespa - 电子商务和 Vespa : filtering customer's wishlist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68577560/

相关文章:

vespa - 在非英语版本中保留 Vespa 中的词序

docker - 在 docker 容器外访问 vespa 的问题

vespa - 是否可以在搜索定义中的 JSON 对象内创建 JSON 数组,并且所有字段都可以在 vespa.ai 中搜索?

Vespa 教程 – Pig 无法连接到本地 Vespa 端点 : URISyntaxException

spell-checking - vespa 有拼写检查器吗

vespa - 从所有 Vespa 集群节点中删除索引

vespa - 如何在 vespa.ai 中合并(合并)多个搜索文档?

kubernetes gce 入口路径通配符不是代理正确的 uri(在容器内工作)

vespa - 如何在 Vespa 中执行精确的最近邻搜索?