Solr 设置 q 参数多条件查询

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 管理平台多条件查询截图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值