solr多条件查询参数设置功能代码:
@RequestMapping(value = "/queryFilefo", method= {RequestMethod.POST})
@ResponseBody
@ApiOperation(value = "文件档案查询")
@ApiImplicitParams({
@ApiImplicitParam(name = "fileTitle", value = "文件题名", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "responsibility", value = "责任者", required = false, allowMultiple = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "fileImageNo", value = "文图号", required = false, allowMultiple = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "archiveYear", value = "归档年度", required = false, allowMultiple = true, dataType = "String", paramType="query") })
public Result queryArchInfo(@RequestBody(required=false) HashMap<String, Object> param) {
HttpServletRequest request = HttpContextUtils.getRequest();
//solr参数拼装中需要删除不存在字段,复制一份Map引用.
HttpSolrClient server = getCommonsHttpSolrServer(request, "fileInfo");
SolrQuery query = new SolrQuery();
PageParam rb = super.initPageBounds(param);
query.setStart((rb.getPageNo() - 1) * rb.getLimit() > 0 ? (rb.getPageNo() - 1) * rb.getLimit() : 0 );
query.setRows(rb.getLimit());
StringBuilder params = new StringBuilder();
if(param.get("fileTitle") != null && !StringUtils.isEmpty(String.valueOf(param.get("fileTitle")))){
//query.setQuery("fileTitle: *"+String.valueOf(param.get("fileTitle"))+"*");
params.append("fileTitle:*"+ClientUtils.escapeQueryChars(String.valueOf(param.get("fileTitle")))+"*");
} else {
params.append("fileTitle:*");
}
if(param.get("responsibility") != null && !StringUtils.isEmpty(String.valueOf(param.get("responsibility")))){
//query.setQuery("responsibility: *"+String.valueOf(param.get("responsibility"))+"*");
params.append(" && responsibility:*"+ClientUtils.escapeQueryChars(String.valueOf(param.get("responsibility")))+"*");
}
if(param.get("fileImageNo") != null && !StringUtils.isEmpty(String.valueOf(param.get("fileImageNo")))){
//query.setQuery("fileImageNo: *"+String.valueOf(param.get("fileImageNo"))+"*");
params.append(" && fileImageNo:*"+ClientUtils.escapeQueryChars(String.valueOf(param.get("fileImageNo")))+"*");
}
query.set("q", params.toString());
//query.setQuery(params.toString());
//TODO 业务档案查询必须传入用户权限科室和事项参数
try {
QueryResponse queryResponse = server.query(query);
PageInfo<Map> page = new PageInfo<Map>(transRowData(queryResponse.getResults()));
page.setTotal(queryResponse.getResults().getNumFound());
server.close();
return Result.ok().setData(page);
} catch (Exception e) {
logger.error("文件档案检索异常", e);
return Result.error("检索异常");
}
}
solr 管理平台多条件查询截图: