我正在构建一个类似app的聊天,我正在Solr 6.5.1中存储聊天对话。 我创建了一个消息集合,每个文档对应于两个用户之间交换的单个消息。文档的fromId和toId如下所示。
我想通过toId对邮件进行分组,并显示每个与用户对话的邮件数量。我可以使用管理员界面来测试它。
但是从我使用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的组。 请帮忙
答案 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);
}
}