-1

排序可以在文档的“分数”上进行,也可以在任何 multiValued="false" indexed="true" 字段上进行,前提是该字段是非标记化的(即:没有分析器)或使用仅生成单个 Term(即:使用 KeywordTokenizer)

文档:- http://wiki.apache.org/solr/CommonQueryParameters#sort

我的原始架构是(您可以认为以下是 GROUP-BY):-

  • 产品(id,唯一)
    • 发表评论的用户(多值)
    • 每个用户的 last_comment_date(多值,一个用户可以发表多条评论,但只捕获最后评论日期)

如果允许对 multiValued 进行排序,
我可以轻松获取某些用户评论的产品列表,
然后按 last_activity_date 排序。

但是,它不起作用。
我目前的解决方法是将架构反转为:-

  • 用户 + 产品(作为 id,唯一)
  • 用户(单值)
  • 最后评论日期
  • 产品

这意味着我(某种程度上)设法获取某些用户评论的产品列表,
按 last_comment_date 排序,
这当然会导致产品重复,
因为产品将出现在每个用户的评论中。

任何模拟分组效果的建议。

之间,我使用 solr 3.1。
字段折叠不适用。

4

1 回答 1

5

按多值字段排序并不是一件待办或可以修补的事情。

它不可能完成,因为它根本没有任何意义。

这样做的方法是为每个文档设置一个单值字段(在索引时间填充最后一个日期),然后对其进行排序。即当索引遍历用户列表及其最后活动日期时,找到最新日期,并将其分配给文档的last-activity-date 字段。

于 2011-12-13T18:19:11.897 回答