solr4.8的安裝,配置,使用,搜索,推薦及見解

solr4.9發佈了,用一個網友的意思,如今solr絕壁是Firefox以外最大的版本帝。公司的solr版本是4.0,這幾天決定給升級到4.8(4.9在maven上資源還不夠),抽時間在整理下分佈式solr.
      今天先把solr4.8安裝過程寫下來,其實和4.0區別不大。
1,環境必須是tomcat7.0以上,jdk7.0以上,jre7.0以上,且配置好環境變量;
2,example\webapps 下的solr.war;
3,solr home,並配置web.xml;
4,拷貝example\lib\ext下的全部jar 到tomcat_home\webapps\solr\WEB-INF\lib下;
5,tomcat_home\webapps\solr\WEB-INF下新建一個classes文件夾,將example\resources下的log4j.properties拷貝過去;
6,啓動,bingo!


------------------------程序員的分割線-------------------------

上面的過程,能夠實現solr單核,簡單的索引,固然這個確定不是咱們想要的。咱們想要的遠遠比這個要多。首先是Multicore,從 example\multicore拷貝全部文件到solr_home下,根據solr.xml來配置,實現多核。密切注意schema.xml和 solrconfig.xml的配置,建議把schema.xml精簡,而後solrconfig對照,避免出現不存在的字段。

多核實現後,是數據庫關聯,方便對數據庫進行導入,目前4.8版本是有bug的,dataimport後頁面會一直indexing,實際上已經 完成,看不到索引數據庫的過程,可是不影響功能。實現數據庫導入,須要將contrib和dist放入solr_home下,刪掉dist下的war和文 件夾,修改solrconfig.xml以及新建指定的dataimport.xml文件,這些與以前版本沒有區別。不要忘了導入數據庫驅動到solr下 的WEB-INFO/lib裏。

4.8以後solr又發佈新的分詞接口,以前solr4.0的接口不能使用,須要中文分詞只好從新實現solr的接口,因此小夥伴們選擇一個穩定 的solr版本,短期內就不要隨意變更了,工做量不小。不過solr4.8仍是很值得升級的。目測solr5.0也很快要發佈了,觀望一個季度吧。有關 中文分詞,我採用的是ansj分詞器,開源,持續更新。方法我會另開篇章來描述。

2014年7月9日更新

加入ansj中文分詞器。
個人ansj是最新版的,我的是比較喜歡這個分詞器的,github地址在https://github.com/ansjsun /ansj_seg/,有興趣的朋友能夠關注下。我是用最新版的,2.0以上的版本。做者提供了良好的多種方案分詞方法以及龐大的算法工具庫,看着讓人眼 花繚亂。若是想和solr結合,須要本身重寫solr或者lucene開放的分詞接口,我是重寫了Analyzer和Tokenizer接口,用相似IK 最新版的方法實現中文分詞搜索和索引。網上有不少方案,實現方法和我不盡相同,不過solr更新迭代太快,因此仍是本身讀得懂分詞器源碼,本身改寫來得實 在。ansj的三種中文分詞,若是索引數據量不大而且用戶量不大,建議用NlpAnalysis,具有發現新詞等功能;不然保守起見,仍是用 ToAnalysis比較靠譜(速度很快,親測超過IK)。


多聊幾句有關分詞的話吧。以前公司用的是IK,我一直使用,也作過升級。IK算是小巧精悍而且性能良好的分詞器了,不過最近兩年沒有更新,據我觀 察是國內使用量最高的分詞器,資料不少,因此沒有過高要求的建議仍是用IK,遇到問題均可以解決,減小開發量。由於開源(源碼掛在google上,很蛋 疼)並且代碼很容易讀懂,因此二次開發也較爲容易,我以前作敏感詞過濾曾經改寫過,效果良好。目前暫時仍是ansj+IK。ansj我是較爲推薦的,就目 前來看,分詞速度以及功能擴展性很強悍,缺點是做者本身不寫lucene和solr的接口實現(固然人家是作天然語言不是作搜索的,不必),其餘大神來 寫的接口不多持續更新,須要本身修改。ansj功能太多,只作搜索的話,會以爲內容很冗餘。不過既然是程序員,就不要把本身想象成碼農,而是努力往極客的 方向靠一靠。一旦理清楚ansj,絕壁會有種豁然開朗的感受。

2014年7月10日更新

升級到solr4.8.1,修復10個bug。
FastVectorHighlighter 快速高效的高亮,佔有IO會更多

solrconfig.xml配置:
<bool name="f.title.hl.useFastVectorHighlighter">true</bool>

schema.xml配置:
<field name="title" type="text_ansj" indexed="true" stored="true" multiValued="true" termVectors="true" termPositions="true"  termOffsets="true" />



修bug時間到!
warn no appenders could be found for logger ,步奏5檢查是否有問題,我以前是把classes寫成classses,折騰好久!

<schema name="example core zero" version="1.1">要寫成<schema name="example core zero" version="1.5">否則中文搜索效果極差,solr提供的example絕壁是坑貨!發現本身搜索效果不理想的請仔細檢查 schema.xml linux


SolrCore 'collection1' is not available due to init failure: Could not load config for solrconfig.xml,linux下會出現的問題,請把example/solr/collection1拷入solr_home下,而且步驟三目錄分隔符用/而不是\。git





提示區!
用中文分詞,schema.xml配置很關鍵,除了從網上粘貼,本身最好仍是要看得懂配置文件的真正含義!
solrconfig.xml和schema.xml兩個配置文件,建議逐行讀懂,讀懂的意思就是要理解。





這塊我會持續更新。有作搜索興趣的朋友能夠互相關注。本人在ITeye上的地址是http://lies-joker.iteye.com/程序員

相關文章
相關標籤/搜索