RavenDB中商店产品的相关性排序

问题描述

假设我们有一家网上商店。

  1. products 表包含 ReleaseDateIsPublished 值。
  2. orders 表包含一个 CreatedDateOrderItems(包含 ProductIdCount
  3. discounts 表包含 ProductId 和最终更复杂的产品查询以及折扣本身。

我的目标是创建一个包含产品属性方面和相关性排序的产品列表。 RavendB 中的 Facet 很棒,这里没问题。 我的问题是排序。

思路如下: 产品按多个条件排序(发布日期已售数量在售)。对于每个标准,产品获得 0 到 100 分。最小值为 0 分,最大值为 100 分。每个标准都有一个权重。最终,发布日期占 50% 的权重,售出单位占 20%,销售占 30%。

得出以下公式(伪代码):

product.relevance = 
(50 * (product.releaseDate - minReleaseDate) / (maxReleaseDate - minReleaseDate)) +
(20 * (product.soldUnits - minSoldUnits) / (maxSoldUnits - minSoldUnits)) +
(30 * (product.isOnSale ? 1 : 0))

我已经有一个索引,其中包含产品及其发布日期和销售单位。折扣仍然是一个问题,但不是这个问题的一部分。我也可以通过方面 (minOn/maxOn) 访问我的标准的最小值/最大值。


我的问题

解决这个问题的最佳选择是什么?我想过创建一个 JavaScript 索引,其中包含一个用于相关性计算的函数(“脚本”)。但是如何获得索引中的最小值/最大值?我可能需要一个索引值(发布日期、销售单位)和另一个相关性索引,对吗?我想这会使查询数据变得更加困难。 我还找到了 Lucene 的自定义收集器,这可能是我需要的功能?但是我在 RavendB (目前使用的是 v5.1) 中找不到任何相关内容

我试图解决这个问题的方式是否过于复杂?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)