提交 5b3bdf61 authored 作者: lizhuo's avatar lizhuo

--no commit message

上级 1d8aaf48
package com.zrqx.works.bg.controller.solr;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zrqx.core.constant.BaseRequestPath;
import com.zrqx.core.constant.works.WorksRequestPath;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.form.solr.SolrQueryForm;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.vo.solr.SolrListVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping(WorksRequestPath.BG + WorksRequestPath.SOLR)
@Api(description = "工作台-资源广场-全文检索")
public class SolrController {
@Autowired
private SolrClient client;
@ApiOperation(value = "分页查询", notes = "查询列表")
@GetMapping(value = BaseRequestPath.PAGE)
public CallBack<PageInfo<SolrListVo>> page(SolrQueryForm form, PageParam pageParam) {
StringBuffer sb = new StringBuffer();
SolrQuery sq = new SolrQuery();
if (StringUtils.isBlank(form.getKeyword())) {
form.setKeyword("*");
}
sb.append("keywords:" + form.getKeyword());
if (StringUtils.isNotBlank(form.getResourceType())) {
sb.append(" && resourceType:" + form.getResourceType());
}
if (StringUtils.isNotBlank(form.getCode())) {
sb.append(" && code:" + form.getCode());
}
sq.set("q", sb.toString());
// 过滤条件
// sq.addFilterQuery("status:" + 3);
// 排序
sq.set("sort", pageParam.getOrderBy());
// 分页
int start = (int) ((pageParam.getPageNum() - 1) * pageParam.getPageSize());
sq.setStart(start);
sq.setRows(pageParam.getPageSize());
// 高亮
// 打开开关
sq.setHighlight(true);
// 指定高亮域
sq.addHighlightField("name");
// 设置前缀
sq.setHighlightSimplePre("<span style='color:red'>");
// 设置后缀
sq.setHighlightSimplePost("</span>");
try {
QueryResponse queryResponse = client.query(sq);
SolrDocumentList results = queryResponse.getResults();
// 获取高亮显示的结果, 高亮显示的结果和查询结果是分开放的
Map<String, Map<String, List<String>>> highlight = queryResponse.getHighlighting();
List<SolrListVo> list = new ArrayList<SolrListVo>();
for (SolrDocument result : results) {
SolrListVo slv = new SolrListVo();
slv.setId((String) result.get("id"));
slv.setName((String) result.get("name"));
slv.setAuthor((String) result.get("author"));
slv.setPublishTime((String) result.get("publishTime"));
slv.setEdition((String) result.get("edition"));
slv.setIntro((String) result.get("intro"));
slv.setBookName((String) result.get("bookName"));
slv.setUpdateTime((Date) result.get("updateTime"));
slv.setStatus((Integer) result.get("status"));
slv.setResourceType((Integer) result.get("resourceType"));
slv.setCover((String) result.get("cover"));
slv.setCode((String) result.get("code"));
Map<String, List<String>> map = highlight.get(result.get("id"));
List<String> namelist = map.get("name");
if (namelist != null && namelist.size() > 0) {
slv.setName(namelist.get(0));
}
list.add(slv);
}
PageInfo<SolrListVo> page = new PageInfo<SolrListVo>();
page.setList(list);
page.setPageNum(pageParam.getPageNum());
page.setPageSize(pageParam.getPageSize());
page.setTotal(results.getNumFound());
return CallBack.success(page);
} catch (Exception e) {
e.printStackTrace();
throw new BaseException("查询失败");
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论