隨著商品數量的增長、以及復雜檢索的需求,直接從數據庫中檢索信息,已經不能滿足展示機搜索的需求。 比如:
http://search.jd.com/Search?keyword=%E8%8B%B9%E6%9E%9C&enc=utf-8
http://www.yougou.com/sr/searchKey.sc?keyword=%E5%A5%B3%E9%9E%8B%E5%A4%A9%E7%BE%8E%E6%84%8F
這個時候就需要引入搜索系統。
搜索系統當前最常用的框架有:Solr、ElasticSearch,他們都是基于Lucene構建的。
本文演示的搜索系統,使用的框架是:Solr4.9.0,關于Solr框架的使用,可以參閱站點:
http://lucene.apache.org/solr/
http://blog.csdn.net/puma_dong/article/details/38880699
演示對商品信息的全量索引建立、主從配置以及搜索的Dubbo接口提供;
對Solr做了入門型的說明,基本滿足基于Solr的搜索的日常應用,對于更多Solr的參數設置,深入研究需要在實踐中不斷總結進步。
關于索引,基本內容大致包含如下:
商品(編碼,款號、名稱、價格、尺碼編號、尺碼名稱、顏色、價格、折扣、圖片鏈接、銷量);
分類(名稱、別名、編碼、拼音名稱);
品牌(編碼、中英文名稱、別名、拼音名稱、首字母拼音名稱);
商品的屬性項目(屬性值);
以及一些用來排序的信息:銷量、價格、折扣等;
對于品牌分類等,需要同時記錄英文名稱;
索引還需要一些管理控制功能,比如臟詞屏蔽、擴展詞庫等;
為了提高建立索引的效率,可能還需要對一些中間結果進行計算,比如:商品的2周銷售數量;
注:關于分類的別名、品牌的別名之類,不建議在搜索系統中單獨為,建議提需求給商品管理系統。
本項目僅僅是演示的雛形,流程是可用的,單沒有完整的信息完整的索引創建、索引接口、及管理控制功能,這個留待以后是否有足夠的業余時間。
索引建立的運行方式如下:crontab */10 * * * * /usr/local/cl/create_index.sh &。
在索引建立項目中,沒有使用任何框架,使用最基礎的JDK編碼,定時任務方式采用crontab,任務流程控制采用linux shell命令。
索引查詢接口項目中,依舊是采用dubbo提供接口。
客戶端使用Solrj。
中文分詞使用IK Analyzer 2012FF_hfl。
最新源碼:git clone git@github.com:pumadong/cl-search.git 。