java读solr_Apache Solr学习 第五篇 java操作solr

packagecom.fan.utils;importcom.fan.pojo.Goods;importorg.apache.log4j.Logger;importorg.apache.solr.client.solrj.SolrQuery;importorg.apache.solr.client.solrj.SolrServerException;importorg.apache.solr.client.solrj.impl.HttpSolrClient;importorg.apache.solr.client.solrj.response.QueryResponse;importorg.apache.solr.client.solrj.response.UpdateResponse;importorg.apache.solr.common.SolrInputDocument;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;/*** @ClassName SolrUtils

* @Description TODO

* @Author Fan

* @Date 2019/11/25 14:05

* @Version 1.0*/

public classSolrUtils {static Logger logger = Logger.getLogger(SolrUtils.class);private static HttpSolrClient httpSolrClient = null;privateSolrUtils(String solrUrl) {/*** 构建httpSolrClient请求对象,solrUrl参数必须到core路径*/httpSolrClient= newHttpSolrClient.Builder(solrUrl).build();

}/*** @Description: 增加/修改

* @Param: [goods]

*@return: void

* @Author: Fan

* @Date: 2019/11/25 14:24*/

publicString addGoods(Goods goods) {

UpdateResponse response= null;/*** 构建一个document*/SolrInputDocument solrInputDocument= newSolrInputDocument();

solrInputDocument.setField("id",goods.getId());

solrInputDocument.setField("goodsname",goods.getGoodsname());

solrInputDocument.setField("description", goods.getDescription());try{

response=httpSolrClient.add(solrInputDocument);

logger.info("增加响应:" +response);

httpSolrClient.commit();

}catch(SolrServerException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}returnresponse.toString();

}/*** @Description: 查询列表

* @Param: []

*@return: java.util.List

* @Author: Fan

* @Date: 2019/11/25 15:51*/

public ListgetGoodsList() {

List goodsList = new ArrayList<>();

SolrQuery queryParam= newSolrQuery();//queryParam.set("q","*:*"); 全部查询

queryParam.set("q","goodsname:*"); //设置相关查询字段

queryParam.addFilterQuery("goodsname:手机"); //fq 设置过滤字段

queryParam.addFilterQuery("price:[1 TO 10000]"); //fq 设置价格过滤

queryParam.addSort("price", SolrQuery.ORDER.desc); //设置排序,根据price

queryParam.setStart(0); //设置分页

queryParam.setRows(15);/** 高亮设置*/queryParam.setHighlight(true); //开启高亮

queryParam.addHighlightField("goodsname"); //设置高亮字段

queryParam.setHighlightSimplePost(""); //设置高亮样式

queryParam.setHighlightSimplePost("");try{

QueryResponse queryResponse=httpSolrClient.query(queryParam);

logger.info("查询响应:" +queryResponse.toString());

queryResponse.getResults().stream().forEach(document->{

Goods goods= newGoods();

goods.setId(document.get("id").toString());

goods.setGoodsname(document.get("goodsname").toString());

goods.setPrice((Float) document.get("price"));

goods.setDescription(document.get("description").toString());

goodsList.add(goods);

});

}catch(SolrServerException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}returngoodsList;

}/*** @Description: 删除根据id

* @Param: [id]

*@return: void

* @Author: Fan

* @Date: 2019/11/25 15:51*/

publicString deleteGoodsById(String id) {

UpdateResponse updateResponse= null;try{

updateResponse=httpSolrClient.deleteById(id);

logger.info("删除响应:" +updateResponse);

httpSolrClient.commit();

}catch(SolrServerException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}returnupdateResponse.toString();

}public staticSolrUtils getInstance(String solrUrl) {return newSolrUtils(solrUrl);

}public static voidmain(String[] args) {

SolrUtils solrUtils= SolrUtils.getInstance("http://127.0.0.1:8983/solr/goods_core");

Goods goods= newGoods();

goods.setId("4");

goods.setGoodsname("努比亚手机2.0");

goods.setPrice(1200.0f);

goods.setDescription("比红绿机强");

solrUtils.addGoods(goods);

solrUtils.getGoodsList().parallelStream().forEach(item->{

System.out.println(item.toString());

});

solrUtils.deleteGoodsById("4");

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值