solrj 实现 group查询
来源:互联网 发布:域名防红源码 编辑:程序博客网 时间:2024/05/22 02:12
public List SearchByGroup(String sServer, String sQuery, String sSortFld, boolean bAsc,
String sPage, String sRows, String sFields, String sShards)
{
List _resultList = new ArrayList(); //返回结果列表,每个结果存放到一个hashmap中
String[] _arrsFields = sFields.split(","); //字段列表
int iSeriesNum = 0; //页面显示的自然增长序号
this.pageSize = Integer.parseInt(sRows);
String sStart = (Integer.parseInt(sPage) - 1) * Integer.parseInt(sRows) + "";
SolrQuery _query = new SolrQuery();
_query.setQuery(sQuery);
_query.setParam("start", sStart);
_query.setParam("rows", sRows);
_query.setParam("group", true);
_query.setParam("group.field", "FID"); //按照FID同族专利去重
_query.setParam("group.ngroups", true);
if (sSortFld != null && !"".equalsIgnoreCase(sSortFld))
{
if (bAsc)
{
_query.setSortField(sSortFld, SolrQuery.ORDER.asc);
}
else
{
_query.setSortField(sSortFld, SolrQuery.ORDER.desc);
}
}
if (sShards != null)
{
// _query.setParam("shards", sShards);
}
if (sFields != null)
{
_query.setParam("fl", sFields);
}
CommonsHttpSolrServer commonsHttpSolrServer = null;
try
{
commonsHttpSolrServer = new CommonsHttpSolrServer(sServer);
commonsHttpSolrServer.setRequestWriter(new BinaryRequestWriter());
QueryResponse _solrRes = commonsHttpSolrServer.query(_query);
GroupResponse _solrGroupRes = _solrRes.getGroupResponse();
List<GroupCommand> _listGroup = _solrGroupRes.getValues();
if (_listGroup == null || _listGroup.size() == 0) //检索到group为null 或者size 为0
{
this.lTotal = 0;
}
else
{
System.out.println(_listGroup.size());
Integer _iSize = _listGroup.get(0).getNGroups();
this.lTotal = _iSize.intValue();
System.out.println("hits:" + _iSize.intValue());
List<Group> _groups = _listGroup.get(0).getValues();
//System.out.println("group size:" + _groups.size());
for(int i=0;i<_groups.size();i++) //对返回的每个组进行循环,组的size为Page分页大小
{
Group _g = _groups.get(i);
SolrDocumentList _solrResult = null;
_solrResult = _g.getResult();
// System.out.println("group include hit:" + _solrResult.size());
for(int j=0;j<_solrResult.size();j++) //对每个组内的记录进行循环,默认组内记录数为1,可由group.limit参考控制
{
Map _map = new HashMap(); //存放记录
SolrDocument _doc = _solrResult.get(j);
iSeriesNum = iSeriesNum + 1 ; //页面显示的自然增长序号
_map.put("num", new Integer(iSeriesNum + new Integer(sStart).intValue()).toString());
for(int k=0;k<_arrsFields.length;k++) //对记录的每个字段循环
{
String sValue = _doc.getFieldValue(_arrsFields[k]).toString();
if (sValue != null)
{
_map.put(_arrsFields[k], sValue);
}
else
{
continue;
}
}
_resultList.add(_map);
}
_solrResult = null;
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
catch (SolrServerException e)
{
e.printStackTrace();
}
return _resultList;
}
- solrj 实现 group查询
- solrj实现solr的group查询:
- solrj实现基本的添加索引,查询
- SOLRJ查询
- Solrj日期范围查询
- https下solrj查询
- Solrj日期范围查询
- solrJ查询使用
- solrj 等价sql查询
- solrj实现增量索引
- solrJ查询参数构造分析
- awj-----Solrj日期范围查询
- solrJ的简单查询操作
- Solrj对SolrServer进行Term查询:(利用prefix 也可以实现auto-complete)
- SolrJ查询使用,高亮查询
- solrJ
- SolrJ
- solrJ
- html--心得1
- mysql varchar长度存放汉字
- html--心得2
- iPhone/iOS UIViewController之UIPageViewController(iOS5 only)
- WPF、WCF、WF打造Hello World程序
- solrj 实现 group查询
- VB6 窗体边缘自动隐藏
- 关于Extjs一些重要概念的领悟
- html--心得3
- MFC的单文档类型项目,屏蔽主界面ENTER键系统退出默认功能
- JSF注册ManagedBean的流程
- 怎么查看男人是否健康?
- android项目中如何获取assets下面的文件在SD卡上面的保存路径
- ffmpeg 编译