我有一组文档,其中包含发件人邮件ID和收件人邮件ID。
当我使用像facet.field=senderemailid&facet.limit=10&facet.offset=0
这样的构面查询时。这样我就可以获得相应邮件ID发送的邮件总数
结果是
< int name =“xxx@e.com”> 157< int>
< int name =“x11@e.com”> 141< int>
< int name =“x22@e.com”> 32< int>
当我使用facet.field=recipientmailid&facet.limit=10&facet.offset=0
时,我可以获得相应邮件ID收到的邮件总数。
结果是
< int name =“x1x@e.com”> 41< int>
< int name =“x22@e.com”> 132< int>
< int name =“x2y@e.com”> 92< int>
一旦我得到了结果,我就使用java代码对结果进行分组,即每个电子邮件ID收到多少个电子邮件,并发送了多少个电子邮件。这样我就无法实现分页。因为两个结果都有所不同电子邮件ID。
我的期望是什么,
< int name =“x22@e.com”>
< int > 32 < int >
< int > 132 < int >
&LT; int name =“x22@e.com”&gt;
所以我一眼就可以收到电子邮件和电子邮件。一次性收到电子邮件数。我不需要使用java代码对结果进行分组。
solr本身是否存在solr to group中的任何方式,这样我就可以避免java代码对结果进行分组以及我可以实现分页
[注意:recipientmailid和senderemailid都是多值的。如果有必要,我可以将senderemailid更改为singlevalued.But收件人邮件ID应该是多值的。]
答案 0 :(得分:0)
你可以多次使用facet.field,你会获得两个方面的结果,但它将是两个独立的对象。这样你就可以减少对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功能