prader6

solr 7.7 搭建和搜索

  最近做了个solr搜索的demo, 用的是solr7.7,之前网上好多文章搭建solr都是5.5+tomcat。。 自己摆弄了下,发现solr7.7和5.5 的部分文件夹有些改动,没有深究原理也就没有弄成功。

  百度最新的7.7,有2篇博客照着做了下,弄好了。。

博客链接:https://www.cnblogs.com/bangzexiong/p/10374783.html

  这里粘贴一下java代码吧: 下面是service实现层,用controller调用接口就可以了,这里需要注意的一点是 红色部分的字体 ,这里设置多大,条下面的的resultSize就有多大,numFound 是一共查出的数据的总条数。。比如 numFound是2000  rows设置为10,那么resultSize()的大小就为10 在集合中就只有 10条数据。

demo 链接:

链接:https://pan.baidu.com/s/1P4OjlUnjYaps5IH6M4zIMQ
提取码:xre7

@Service
public class SolrServiceImpl implements SolrService {

private static final String solrUrl = "http://localhost:8983/solr/happy";

@Override
public PageBean listEcnomic(String name) {
//PageHelper.startPage(1,20);
ArrayList<EcnomicVo> voList = Lists.newArrayList();

try {
HttpSolrClient solrClient = new HttpSolrClient.Builder(solrUrl).build();
// 创建搜索对象
SolrQuery solrQuery = new SolrQuery();
// 设置搜索条件
solrQuery.set("defType","edismax");
solrQuery.set("mm","100%");
solrQuery.set("q","name:*"+ name +"*");
// 分页参数
solrQuery.setStart(0);
// 设置每页显示多少条 这里的row 决定了result.size row多大 下面的result.size 多大
solrQuery.setRows(10);

//发起搜索请求
QueryResponse response = solrClient.query(solrQuery);
// 查询结果
SolrDocumentList results = response.getResults();
// 查询结果总数
long numFound = results.getNumFound();
System.out.println("一共查询出" + numFound + "条数据");
System.out.println(results.size());
for (SolrDocument document : results){
EcnomicVo ecnomicVo = new EcnomicVo();
ecnomicVo.setName(document.getFieldValue("name").toString());
ecnomicVo.setPepole(document.getFieldValue("pepole").toString());
if (document.getFieldValue("createTime") !=null ){
ecnomicVo.setCreateTime(document.getFieldValue("createTime").toString());
}
voList.add(ecnomicVo);
}
System.out.println(voList.size());
PageBean<EcnomicVo> pageBean = new PageBean<>();
pageBean.setTotal(voList.size());
pageBean.setTotalPages(voList.size()/2);
pageBean.setPageNumber(1);
pageBean.setPageSize(2);
pageBean.setPageDatas(voList);
return pageBean;
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

posted on 2019-03-04 14:22  prader6  阅读(430)  评论(0编辑  收藏  举报

导航