【问题标题】:How to group the result of two facet query in a single query..?如何在单个查询中对两个方面查询的结果进行分组..?
【发布时间】:2013-03-14 10:30:49
【问题描述】:

我有一组文档,其中包含发件人邮件 ID 和收件人邮件 ID。

当我使用像facet.field=senderemailid&facet.limit=10&facet.offset=0 这样的方面查询时。这样我就可以获得相应邮件ID发送的邮件总数

结果是

157

141

32


当我使用facet.field=recipientmailid&facet.limit=10&facet.offset=0 时,我可以获得相应邮件 ID 收到的邮件总数。

结果是

4​​1

132

92

一旦我得到结果,我使用 java 代码对结果进行分组,每个电子邮件 id 收到多少封电子邮件并发送多少封电子邮件。这样我无法实现分页。因为两个结果在某些方面有所不同电子邮件 ID。

我的期望是,

           < int >  32  < int >

           < int >  132 < int >

因此,我可以一次性收到发送的电子邮件和收到的电子邮件计数。我不需要使用 java 代码对结果进行分组。

solr中是否有任何方法可以将结果分组到solr本身,这样我就可以避免java代码对结果进行分组,也可以实现分页

[注意:recipientmailid 和 senderemailid 都是多值的。如果以后有需要我可以将 senderemailid 更改为单值。但是收件人邮件 ID 应该是多值的。]

【问题讨论】:

    标签: solr facet solr-query-syntax


    【解决方案1】:

    您可以多次使用 facet.field,您将获得两者的 facet 结果,但这将是两个独立的对象。这样你可以减少对 solr 的查询。 o/p 如下所示

       "facet_counts":{
        "facet_queries":{},
        "facet_fields":{
          "sender":[
            "xyz@ghh.com",21,
            "xyz2@ghh.com",11,
            "xyz3@ghh.com",15,
            "xyz4@ghh.com",2],
          "reciever":[
            "xyz3@ghh.com",21,
            "xyz2@ghh.com",12,
            "xyz1@ghh.com",13,
            "xyz9@ghh.com",4],
    

    是的,您需要至少循环一次结果集!!。 试试 facet.pivot .this 可能会帮助你。这是solr4.0的特性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多