问题描述
假设我们有一家网上商店。
-
products 表包含
ReleaseDate
和IsPublished
值。 -
orders 表包含一个
CreatedDate
和OrderItems
(包含ProductId
和Count
) -
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 (将#修改为@)