1

我想在 Solr 中列出一长串具有非常特定顺序的项目。我没有使用 Solr 方面的经验:它们是在日期范围内对结果进行分组的好方法,在该范围内我可以稍微提升各种项目?

订货原则

  1. 所有项目通常必须按时间顺序排列
  2. 此顺序必须严格按照特定范围
  3. 在这样的范围内,项目可能会获得更高的优先级
  4. 在此范围内,项目可能具有超高优先级
  5. 在完整列表中,某些项目可能超出其范围并停留在顶部

示例配置

因此,如果我有一个项目表,它可能如下所示:

  1. 粘性物品 100% 在顶部
  2. 事件的优先级高于博客
  3. 精选始终位于某个范围内的顶部
  4. 范围设置为一周(7 天)

这可能看起来像这样(示例 1):

sticky   | 2012-11-01
blog 2   | 2012-12-02
blog 1   | 2012-12-01

或者(示例 2,虚线仅表示周障碍):

blog 5   | 2012-11-26
---------------------
featured | 2012-11-19   <<< featured are at the top in week 19-25 Nov
blog 4   | 2012-11-23
blog 3   | 2012-11-22
blog 2   | 2012-11-21
blog 1   | 2012-11-19
---------------------
featured | 2012-11-12

或者(示例 3):

event    | 2012-11-28   <<< events have a bit more prio in week 26 Nov - 2 Dec
blog 5   | 2012-11-29
blog 5   | 2012-11-28
blog 5   | 2012-11-26
---------------------
event    | 2012-11-20   <<< events have a bit more prio in week 19-25 Nov
blog 4   | 2012-11-23
blog 3   | 2012-11-22
event    | 2012-11-19   <<< events have a bit more prio in week 19-25 Nov
blog 2   | 2012-11-21
blog 1   | 2012-11-19
---------------------
blog     | 2012-11-18

(澄清一下,事件的优先级(1 或 2 天或 x% 只是用于微调,目前这不是我的问题的一部分)

问题

现在的问题是:我知道我可以将每个字段或每个字段值的项目提升到一定数量较高的值,以将其推到顶部。但我必须将其限制在一定范围内(在示例中为 7 天)。就像事件一样,精选永远不会超出一周的范围。

我听说过方面,但不确定这是否可以解决我的问题。由于我是 solr 的外行,所以很难弄清楚我是否能做到这一点。我看过 solr wiki,但所有新术语都让我对这个想法的搜索有点混乱。

我可以通过使用“分页”作为日期范围来解决这个问题(所以搜索从:[日期]到:[日期]),因此我自己创建一个“方面”。这更容易吗?如您所见,我对方面和复杂的 solr 查询一无所知:)

4

1 回答 1

1

您可以做的一件事是使用分组功能。您将一年中的第几周 (GregorianCalendar WEEK_OF_YEAR) 存储在一个新的索引字段中,并以此对结果进行分组。在组内部有您定义的正常相关性计算。

这是一个示例链接:http ://wiki.apache.org/solr/FieldCollapsing

于 2012-12-02T15:04:10.803 回答