一、分析
同步solr服务器中的信息,需要以下信息(前提已经配置好solr服务器)需要用到的字段:
1、商品id
2、商品title
3、卖点
4、价格
5、商品图片
6、商品分类名称
7、商品描述
在添加商品的同时,只要把信息提交到solr就行。
二、配置
1、把taotao-search中的solr的配置文件applicationContext-solr.xml,复制到taotao-manager-web的resources的spring文件下
2、在resource.properties文件中填入solr服务器地址
#solr地址,ip改成自己solr服务器的地址
SOLR.SERVER.URL=http://ip:8080/solr
三、新增商品同步solr
1、首先在taotao- manager-service的pom.xml文件中添加solr的依赖,代码如下
<!-- solr客户端 -->
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
</dependency>
2、在商品添加的时候,同步到solr服务器中,首先打开商品添加的代码:
- 打开taotao- manager-service中的ItemServiceImpl类
添加SolrService注入,代码如下
@Autowired private SolrServer solrServer;
3、在ItemServiceImpl类中的createItem()方法中,添加如下代码填写在代码 return TaotaoResult.ok();前就行:
//*********************solr信息同步***** //查询商品类目 TbItemCat itemCat=new TbItemCat(); itemCat=itemCatMapper.selectByPrimaryKey(item.getCid()); //因为item中没有商品类目的名字,只有cid,所以需要用cid去查询到类目名称 try { // 把商品信息写入索引库 // 创建一个SolrInputDocument对象 SolrInputDocument document = new SolrInputDocument(); document.setField("id", item.getId()); document.setField("item_title", item.getTitle()); document.setField("item_sell_point", item.getSellPoint()); document.setField("item_price", item.getPrice()); document.setField("item_image", item.getImage()); document.setField("item_category_name", itemCat.getName()); document.setField("item_desc", desc); // 写入索引库 solrServer.add(document); // 提交修改 solrServer.commit(); } catch (Exception e) { e.printStackTrace(); return TaotaoResult.build(500, ExceptionUtil.getStackTrace(e)); } //********************************
四、删除商品同步solr
- 打开taotao- manager-service中的ItemServiceImpl类
在ItemServiceImpl类中的deleteItem()方法中,添加如下代码
String id=String.valueOf(itemId); //因为solrServer的deleteById接受的是String类型的数据,所以需要转换下 try { solrServer.deleteById(id); solrServer.commit(); } catch (SolrServerException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
四、测试
新增商品信息,删除商品信息,测试查询即可。