1、Solr的簡單安裝
運行Solr需要安裝jdk,這裡略過。
Solr下載後,放到D盤根目錄下,然後點擊開始功能表,點擊運行,輸入cmd回車,輸入如下命令:
1. C:UsersAdministrator>d:
2. D:>cd solr-4.9.0/example
3. D:>java -jar start.jar
或者在solr-4.9.0下創建個啟動.bat,調試會方便些
1. @echo off
2. title 啟動服務
3. cd example
4. java -jar start.jar
5. pause
2、Solr配置多核
進入solr-4.9.0example下,複製collection1資料夾並重命名為collection2,進入collection2conf,編輯core.properties檔,將name=collection1改為name=collection2,也就是複製後的資料夾名稱,多核就配置好了
3、配置IKAnalyzer中文分詞
通過上面的IKAnalyzer地址,下載IK Analyzer 2012FF_hf1.zip,將解壓後的IKAnalyzer2012FF_u1.jar放到solr-4.9.0examplesolr-webappwebappWEB-INFlib下,將IKAnalyzer.cfg.xml、stopword.dic放到solr-4.9.0examplesolr-webappwebappWEB-INFclasses下,沒有classes資料夾就創建一個。
打開solr-4.9.0examplesolrcollection1confschema.xml文件,粘帖如下代碼:
1. <fieldType name=“text_ik” class=“solr.TextField”>
2. <analyzer class=“org.wltea.analyzer.lucene.IKAnalyzer”/>
3. </fieldType>
4.
5. <field name=“ik” type=“text_ik” indexed=“true” stored=“true” multiValued=“false” />
重啟伺服器,也就是啟動.bat,然後我們前往http://localhost:8983/solr/#/collection1/analysis,隨便打上一段話,比如“隨便打些漢字測試分詞效果”,記得Analyse
Fieldname選擇我們剛剛配置的ik,點擊Analyse Values按鈕
這樣就分詞成功了
下一次我們配置IKAnalyzer的細細微性分詞和智慧分詞
上一次我們成功配置了Solr搜索以及IKAnalyzer的中文分詞,但是在IKAnalyzer_2012FF_hf1版本的IKAnalyzer類中沒有讀取配置中的useSmart屬性,所以在建立索引和查詢索引中都使用的是細細微性分詞。網上找到了他人分享的方法,解決了這個問題。
方法是創建了兩個類IKAnalyzerWithSmart(默認智慧分詞)和IKAnalyzerWithoutSmart(默認細細微性分詞),再重新匯出jar包,將jar包放到solr-4.9.0examplesolr-webappwebappWEB-INFlib目錄下,並修改schema.xml檔內容如下,這樣就能夠在創建索引時使用智慧分詞,在查詢索引時使用細細微性分詞。
1. <fieldType name=“text_ik” class=“solr.TextField”>
2. <analyzer type=“index” class=“org.wltea.analyzer.lucene.IKAnalyzerWithSmart” />
3. <analyzer type=“query” class=“org.wltea.analyzer.lucene.IKAnalyzerWithoutSmart” />
4. </fieldType>
效果預覽
相關步驟:
1、下載IKAnalyzer原始程式碼
原始程式碼檔案名:IK Analyzer 2012FF_hf1_source.rar,如果穀歌上不去可以下載網盤裡的,都一樣
2、導入IKAnalyzer原始程式碼
這裡呢我們需要用到eclipse,如果電腦上沒有的話可以下載安裝一個
1)首先打開eclipse,選擇File–>New–>Project,
2)選擇Java–>Java Project,點擊Next,
3)輸入Project name:IKAnalyzer_2012FF_hf1_custom,點擊Finish
4)打開解壓後的IKAnalyzer source資料夾,複製src下的org資料夾,拷貝到剛剛創建的java專案IKAnalyzer_2012FF_hf1_custom下的src目錄。刷新左側列表,發現有好多紅叉
這是因為IKAnalyzer引用的jar包沒有被導入的關係,那麼我們來導入相關jar包。
3、導入相關jar檔
第一個錯誤是這裡,IKAnalyzer.java:
滑鼠放上去提示是:The import org.apache cannot be resolved,因為他這裡導入的是org.apache.lucene,所以要去下載Apache Lucene
4.9.0,下載後解壓。
解壓後按右鍵項目名稱IKAnalyzer_2012FF_hf1_custom,選擇最下面的Properties,或者按快速鍵Alt+Enter,接下來選Java Build Path–>Libraries–>Add External JARs,找到我們剛剛解壓的Lucene資料夾,選擇lucene-4.9.0corelucene-core-4.9.0.jar這個jar檔,OK
這樣就導入了一個jar包,接下來已同樣的方法導入下面兩個檔:
·
lucene-4.9.0queryparserlucene-queryparser-4.9.0.jar
·
lucene-4.9.0analysiscommonlucene-analyzers-common-4.9.0.jar
4、創建類
粘帖下面的代碼,IKAnalyzerWithSmart.java:
1. package org.wltea.analyzer.lucene;
2. import java.io.Reader;
3. import org.apache.lucene.analysis.Analyzer;
4. import org.apache.lucene.analysis.Tokenizer;
5. /**
6. * @Description: TODO
7. * @author houqirui
8. * @date 2014-8-1 下午5:01:57
9. */
10. public final class IKAnalyzerWithSmart extends Analyzer{
11. private boolean useSmart = true;
12. public boolean useSmart() {
13. return useSmart;
14. }
15. public void setUseSmart(boolean useSmart) {
16. this.useSmart = useSmart;
17. }
18. /**
19. * IK分詞器Lucene Analyzer介面實現類
20. *
21. * 預設細細微性切分演算法
22. */
23. public IKAnalyzerWithSmart(){
24. this(true);
25. }
26. /**
27. * IK分詞器Lucene Analyzer介面實現類
28. *
29. * @param useSmart 當為true時,分詞器進行智慧切分
30. */
31. public IKAnalyzerWithSmart(boolean useSmart){
32. super();
33. this.useSmart = useSmart;
34. }
35. /**
36. * 重載Analyzer介面,構造分片語件
37. */
38. @Override
39. protected TokenStreamComponents createComponents(String fieldName, final Reader in) {
40. Tokenizer _IKTokenizer = new IKTokenizer(in , this.useSmart());
41. return new TokenStreamComponents(_IKTokenizer);
42. }
43. }
同樣的方法創建IKAnalyzerWithoutSmart類,IKAnalyzerWithoutSmart.java:
1. package org.wltea.analyzer.lucene;
2. import java.io.Reader;
3. import org.apache.lucene.analysis.Analyzer;
4. import org.apache.lucene.analysis.Tokenizer;
5. /**
6. * @Description: TODO
7. * @author houqirui
8. * @date 2014-8-1 下午5:01:57
9. */
10. public final class IKAnalyzerWithoutSmart extends Analyzer{
11. private boolean useSmart = false;
12. public boolean useSmart() {
13. return useSmart;
14. }
15. public void setUseSmart(boolean useSmart) {
16. this.useSmart = useSmart;
17. }
18. /**
19. * IK分詞器Lucene Analyzer介面實現類
20. *
21. * 預設細細微性切分演算法
22. */
23. public IKAnalyzerWithoutSmart(){
24. this(false);
25. }
26. /**
27. * IK分詞器Lucene Analyzer介面實現類
28. *
29. * @param useSmart 當為true時,分詞器進行智慧切分
30. */
31. public IKAnalyzerWithoutSmart(boolean useSmart){
32. super();
33. this.useSmart = useSmart;
34. }
35. /**
36. * 重載Analyzer介面,構造分片語件
37. */
38. @Override
39. protected TokenStreamComponents createComponents(String fieldName, final Reader in) {
40. Tokenizer _IKTokenizer = new IKTokenizer(in , this.useSmart());
41. return new TokenStreamComponents(_IKTokenizer);
42. }
43. }
4、匯出jar文件
滑鼠按右鍵專案,Export–>Java–>JAR File–>Next,點擊Browse,選擇jar存放的路徑,記得輸入檔案名,保存後點擊Finish,jar檔匯出完畢。
沒有留言:
張貼留言