1. 程式人生 > >淘淘商城新增商品刪除商品自動同步到solr伺服器

淘淘商城新增商品刪除商品自動同步到solr伺服器

一、分析

同步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();
    }
    

    這裡寫圖片描述

四、測試

新增商品資訊,刪除商品資訊,測試查詢即可。