在multiValued字段上排序是否有任何解决方法?

ajr*_*eal -1 solr group-by multivalue

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

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

我原来的架构是(您可以考虑以下是GROUP-BY): -

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

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

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

  • 用户+产品(作为id,唯一)
  • 用户(单值)
  • last_comment_date
  • 制品

这意味着我(有点)设法获得某些用户评论的产品列表,
按last_comment_date排序,
当然它会导致产品重复,
因为产品将出现在每个用户的评论中.

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

之间,我使用solr 3.1.
现场折叠不适用.

Mau*_*fer 5

按多值字段排序不仅仅是待处理或可以修补的内容.

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

执行此操作的方法是为每个文档创建一个单值字段(在索引时填充最后一个日期),然后对其进行排序.即,当索引遍历具有上次活动日期的用户列表时,查找最新日期,并将其分配给文档的last-activity-date字段.