Java solrclient组查询

时间:2017-06-28 07:39:13

标签: solr solrj solr4

我正在构建一个类似app的聊天,我正在Solr 6.5.1中存储聊天对话。 我创建了一个消息集合,每个文档对应于两个用户之间交换的单个消息。文档的fromId和toId如下所示。

enter image description here

我想通过toId对邮件进行分组,并显示每个与用户对话的邮件数量。我可以使用管理员界面来测试它。 enter image description here

但是从我使用SolrJ的Java代码中我无法得到相同的结果。以下是我的代码段

SolrQuery query = new SolrQuery();
query.set("wt", "json");
query.setQuery("fromId:1234");
query.set("group",true);
query.set("group.field", "toId");
try {
        GroupResponse gRes = client.query(query).getGroupResponse();
        List<GroupCommand> groupCommands = gRes.getValues();
        List<GroupResult> grs = new ArrayList<>();
        for(GroupCommand gc : groupCommands){
            GroupResult gr = new GroupResult();
            gr.setCount(gc.getMatches());
            gr.setGroupText(gc.getName());
            grs.add(gr);
        }
        return grs;
    } catch (SolrServerException | IOException e) {
        e.printStackTrace();
        return Collections.EMPTY_LIST;
    }

但这不是给我这两个组,而是我只得到一个匹配计数为6的组。 请帮忙

1 个答案:

答案 0 :(得分:0)

回答我自己的问题。以下是我的代码进入群组所需的更改。

QueryResponse gRes = client.query(query);
        GroupResponse grpR = gRes.getGroupResponse();
        List<GroupCommand> groupCommands = gRes.getGroupResponse().getValues();
        List<GroupResult> grs = new ArrayList<>();
        for(GroupCommand gc : groupCommands){
            List<Group> groups = gc.getValues();
            for(Group group : groups){
                GroupResult gr = new GroupResult();

                gr.setGroupText(group.getGroupValue());
                gr.setCount(group.getResult().getNumFound());
                grs.add(gr);
            }
        }