1. 程式人生 > >(轉)淘淘商城系列——導入商品數據到索引庫——Service層

(轉)淘淘商城系列——導入商品數據到索引庫——Service層

document hit exception earch comm 導入 查詢 文件 操作

http://blog.csdn.net/yerenyuan_pku/article/details/72894187

通過上文的學習,我相信大家已經學會了如何使用Solrj來操作索引庫。本文我們將把商品數據導入到索引庫中的Service層代碼編寫完畢!
首先在taotao-search-interface工程中新建一個接口,如下圖所示。
技術分享
可以看到importAllItemToIndex方法的返回值類型是TaotaoResult,當你糾結返回值是什麽的時候,你就可以使用TaotaoResult。
接著在taotao-search-service工程中新建以上接口的SearchItemServiceImpl實現類,為了方便大家復制,現將SearchItemServiceImpl實現類的代碼貼出。

/**
 * 導入商品數據到索引庫
 * <p>Title: SearchItemServiceImpl</p>
 * <p>Description: </p>
 * <p>Company: www.itcast.cn</p> 
 * @version 1.0
 */
@Service
public class SearchItemServiceImpl implements SearchItemService {

    @Autowired
    private SolrServer solrServer;

    @Autowired
    private ItemMapper itemMapper;

    @Override
    public TaotaoResult importAllItemToIndex() throws Exception {
        // 1、查詢所有商品數據。
        List<SearchItem> itemList = itemMapper.getItemList();
        // 2、創建一個SolrServer對象。
        // 3、為每個商品創建一個SolrInputDocument對象。
        SolrInputDocument document = new SolrInputDocument();
        for (SearchItem searchItem : itemList) {
            // 4、為文檔添加域
            document.addField("id", searchItem.getId());
            document.addField("item_title", searchItem.getTitle());
            document.addField("item_sell_point", searchItem.getSell_point());
            document.addField("item_price", searchItem.getPrice());
            document.addField("item_image", searchItem.getImage());
            document.addField("item_category_name", searchItem.getCategory_name());
            document.addField("item_desc", searchItem.getItem_desc());
            // 5、向索引庫中添加文檔。
            solrServer.add(document);
        }
        // 提交
        solrServer.commit();
        // 6、返回TaotaoResult,當你糾結返回值是什麽的時候,你就可以使用TaotaoResult。
        return TaotaoResult.ok();
    }

}

以上代碼中要使用ItemMapper,故Spring容器需要能夠管理它才行,我們打開applicationContext-dao.xml文件,可以看到掃描包的範圍是com.taotao.mapper和com.taotao.search.mapper,這說明之前我們已經配置好了,因此這裏不用做任何修改。
技術分享
這裏面還有一個問題,Service層要用到一個SolrServer對象,而Spring默認是沒有管理這個對象的,我們再單獨建一個applicationContext-solr.xml文件來管理,如下圖所示。
技術分享
服務編寫完之後,下面要做的便是發布服務了,即在applicationContext-service.xml文件中添加如下配置。

<dubbo:service interface="com.taotao.search.service.SearchItemService" ref="searchItemServiceImpl" timeout="300000" />

技術分享
這樣,把商品數據導入到索引庫中的Service層代碼編寫完畢!

(轉)淘淘商城系列——導入商品數據到索引庫——Service層