加载中...
加载中...
springboot整合solr定时更新索引(代码实现)

springboot整合solr定时更新索引(代码实现) 转载

    solr索引更新可以有三中方式,一种是实时更新(网上一找一大堆,在这里不解释),还有两种定时更新,这两种定时更新一种是基于注解的  还有一种我是用到了springboot的定时器(定时区索引库删除全部缓存索引  然后再去数据库查) 

因为我们使前后台分成两个项目做得  所以这块我用的是定时更新索引的方法   基于配置的大多需要下载apache-solr-dataimportscheduler-1.0.jar的jar包然而这个jar包有许多的坑所以放弃自己写一个定时的   至于springboot的定时器其实俩注解

/*
*
* 定时器
* */
//cron代表的是时间 如下代表(23点59分59秒)
@Scheduled(cron = "59 59 23 * * ?")
public void timer() throws Exception{
//获取当前时间
LocalDateTime localDateTime =LocalDateTime.now();
//输出当前时间
System.out.println("当前时间为:" +
localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
//调用删除索引的方法
deleteDocument();
Thread.sleep(5000);
//调用数据新增到索影库的方法
selectGoods();
}


//首先你得注入solr

@Autowired

private SolrClient solrClient;

/*
* 从索引库删除文档
*/
public void deleteDocument() throws Exception {

//删除所有的索引
solrClient.deleteByQuery("*:*");
//提交修改
solrClient.commit();
System.out.println("成功了");
}


//将数据库查到的数据放入solr库

public void selectGoods() throws Exception {
//先去数据库查数据
List<Goods> list = searchService.selecGoods();
循环遍历查询
for (Goods items : list) {
SolrInputDocument document = new SolrInputDocument();
//创建文档对象
//添加域
System.out.println(items);
document.addField("id",items.getGoods_id().toString());
document.addField("goods_id", items.getGoods_id().toString());
document.addField("goods_title", items.getGoods_title());
document.addField("vigour_value", items.getVigour_value());
document.addField("price", items.getPrice());
document.addField("performance", items.getPerformance());
document.addField("growth_value", items.getGrowth_value());
document.addField("introduce", items.getIntroduce());
document.addField("img_url", items.getImg_url());
//写入
// System.out.println(document);
solrClient.add(document);
}
//提交
solrClient.commit();
System.out.println("我也成功了");
}

solr查询

@Override
public List<Goods> getgoodlist(String goods_title) throws IOException, SolrServerException {
List<Goods> listtt=new ArrayList<>();
SolrQuery params = new SolrQuery();
if(goods_title != null){
// q 代表查询的关键字 代表如果title不为空 就拼title条件去查询
params.set("q", goods_title);
}else{
// 为空则去查询所有
params.set("q", "*:*");
}
//排序
// params.addSort("goods_id", SolrQuery.ORDER.asc);
params.set("start",0);
//该参数就是控制条数
params.set("rows", Integer.MAX_VALUE);
//分页
params.setStart(0);
params.setRows(20);
// df 代表默认的查询字段
params.set("df", "product_keywords");
// params.set("df","introduce");
// 指的是你查询完毕之后要返回的字段
params.set("fl", "goods_title,introduce,vigour_value,growth_value,price,goods_id,performance,img_url");
//高亮
//打开开关
params.setHighlight(false);
// params.set("fl","goods_title");
params.addHighlightField("introduce"); // 高亮字段

//设置前缀
params.setHighlightSimplePre("<font color=\"red\">");
//设置后缀
params.setHighlightSimplePost("</font>");
// System.out.println("----------------------------"+params);
QueryResponse queryResponse = solrClient.query(params);
SolrDocumentList results = queryResponse.getResults();
long numFound = results.getNumFound();
// System.out.println(numFound);
Map<String, Map<String, List<String>>> highlight = queryResponse.getHighlighting();
int i=0;
for (SolrDocument result : results) {
Goods goods=new Goods();
String highname="";
Map<String, List<String>> map = highlight.get(result.get("goods_id"));
List<String> list = map.get(result.get("goods_title"));
if(list==null){
highname=(String)result.get("goods_title");
}else{
highname=list.get(i);
}
goods.setGoods_id((String) result.get("goods_id"));
// System.out.println("questionscontet---------------"+(String)result.get("goods_title"));
goods.setGoods_title((String)result.get("goods_title"));
goods.setIntroduce((String) result.get("introduce"));
goods.setVigour_value((Double) result.get("vigour_value"));
goods.setGrowth_value((Integer) result.get("growth_value"));
goods.setPrice((Double)result.get("price"));
goods.setPerformance((Double) result.get("performance"));
goods.setImg_url((String) result.get("img_url"));
listtt.add(goods);
i++;
}
return listtt;
}



————————————————
版权声明:本文为CSDN博主「菜鸟还是大神」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/wyr1122334/article/details/86704699 

没有更多推荐了 [去首页]
image
文章
376
原创
293
转载
83
翻译
0
访问量
183398
喜欢
73
粉丝
5
码龄
7年
资源
3

文章目录

加载中...
0
0