我想在Solr中有一个很长的项目列表,并有一个非常具体的顺序。我没有Solr方面的经验:它们是在一个日期范围内对结果进行分组的好方法吗?在这个范围内,我可以稍微提升各种项目?
订购原则
- 所有项目通常必须按时间顺序排列
- 此订单必须严格按照特定范围执行
- 在这样的范围内,项目可能会获得更高的优先级
- 在此范围内,项目可能具有超高优先级
- 在完整的列表中,有些项目可能超出了它们的范围,并停留在顶部
示例配置
因此,如果我有一个项目表,它可能看起来像这样:
- 粘性物品100%位于顶部
- 活动的prio比博客高
- 特色总是在一个范围内名列前茅
- 范围设置为一周(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天)。特色节目永远不会像活动一样超出一周的范围。
我听说过facets,但不确定这是否能解决我的问题。由于我是solr的门外汉,很难弄清楚我是否能做到这一点。我看过solr wiki,但所有的新术语都让我对这个想法的搜索有点混乱。
我可能会通过使用"分页"作为日期范围来解决这个问题(因此从:[date]到:[date'进行搜索),从而自己创建一个"方面"。这样容易吗?正如你所看到的,我对facets和复杂的solr查询一无所知:)
您可以做的一件事就是使用分组功能。您将一年中的一周(GregorianCalendar week_of_year)存储在一个新的索引字段中,并以此对结果进行分组。在组内部有您定义的正常相关性计算。
以下是示例链接:http://wiki.apache.org/solr/FieldCollapsing