排序可以在文档的“分数”上进行,也可以在任何 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。
字段折叠不适用。