最近接手了公司搜索相關的業務,因爲其使用的是Solr
,故趁着週末本身鼓搗下;java
因爲業務上使用的是Solr4.2.0
版本,所以在學習時,使用相對較老的版本Solr4.9.0
,當前已經更新到Solr6.6.0
本文記錄本身在學習過程當中的一些收穫;web
將下載的solr-4.9.0.tgz
解壓到指定目錄.好比/home/pekxxoo/solr/solr-4.9.0
app
將/home/pekxxoo/solr/solr-4.9.0/example/webapps
下的solr.war
文件拷貝到tomcat->webapps
目錄下webapp
新建文件夾/home/pekxxoo/solr/solr_home
,並將/home/pekxxoo/solr/solr-4.9.0/example/solr
目錄拷貝到/home/pekxxoo/solr/solr_home
中工具
切換到tomcat/bin
目錄下,啓動tomcat
.此時tomcat
會把solr.war
文件進行解壓生成一個solr
文件夾,而後中止tomcat
(./shutdown.sh
)學習
編譯tomcat目錄下/webapps/solr/WEB-INF/web.xml
,找到下面的代碼:優化
<!-- <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/home/pekxxoo/solr/solr_home/solr</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> -->
打開註釋,修改成:
<env-entry> <env-entry-name>solr/home</env-entry-name> <!--此處爲solr_home的地址,我配置的路徑是/home/pekxxoo/solr/solr_home/solr--> <env-entry-value>/home/pekxxoo/solr/solr_home/solr</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
將/home/pekxxoo/solr/solr-4.9.0/example/lib/ext
目錄下jar包所有拷貝到tomcat目錄下webapps/solr/WEB-INF/lib
目錄下
在tomcat/webapps/solr/WEB-INF/
目錄下新建classes
目錄,將/home/pekxxoo/solr/solr-4.9.0/example/resources
目錄下的log4j.properties
文件拷貝到tomcat/webapps/solr/WEB-INF/classes
目錄下
在/home/pekxxoo/solr/solr_home/solr/collection1/conf
目錄下打開solrconfig.xml
配置,搜索solr.clustering.enabled
找到以下配置文件:
<searchComponent name="clustering" enable="${solr.clustering.enabled:false}" class="solr.clustering.ClusteringComponent" >
將true改成false便可(`solr4.9.0`默認爲false,4.5以前須要手動修改)
啓動tomcat,訪問http://localhost:8080/solr
IK Analyzer
是一個開源的,基亍java
語言開發的輕量級的中文分詞工具包。從 2006年 12 月推出 1.0 版開始, IKAnalyzer 已經推出了 4 個大版本。最初,它是以開源項目Luence
爲應用主體的,結合詞典分詞和文法分析算法的中文分詞組件。從 3.0 版本開始,IK 發展爲面向 Java 的公用分詞組件,獨立亍 Lucene 項目,同時提供了對 Lucene 的默認優化實現。在 2012 版本中,IK 實現了簡單的分詞歧義排除算法,標誌着 IK 分詞器從單純的詞典分詞向模擬語義分詞衍化。
IK Analyzer 2012 版本支持 細粒度切分
和 智能切分
,如下是兩種切分方式的演示樣例。
文本原文 :
IKAnalyzer 是一個開源的,基亍 java 語言開發的輕量級的中文分詞工具包。從 2006 年 12月推出 1.0 版開始, IKAnalyzer 已經推出了 3 個大版本。
智能分詞結果:ikanalyzer | 是 | 一個 | 開源 | 的 | 基亍 | java | 語言 | 開發 | 的 | 輕量級 | 的 | 中文 | 分詞 | 工具包 | 從 | 2006年 | 12月 | 推出 | 1.0版 | 開始 | ikanalyzer | 已經 | 推| 出了 | 3個 | 大 | 版本
最細粒度分詞結果:ikanalyzer | 是 | 一個 | 一 | 個 | 開源 | 的 | 基亍 | java | 語言 | 開發 | 的 | 輕量級| 量級 | 的 | 中文 | 分詞 | 工具包 | 工具 | 包 | 從 | 2006 | 年 | 12 | 月 | 推出 | 1.0 | 版 | 開始 | ikanalyzer | 已經 | 推出 | 出了 | 3 | 個 | 大 | 版本
首先須要下載ik-analyzer
分詞包,點擊下載
將下載的IK Analyzer 2012FF_hf1.zip
包解壓縮包含:
《IKAnalyzer 中文分詞器 V2012 使用手冊》(即本文檔)
IKAnalyzer2012.jar(主 jar 包)
IKAnalyzer.cfg.xml(分詞器擴展配置文件)
stopword.dic(中止詞典)
LICENSE.TXT ; NOTICE.TXT (apache 版權申明)
將 IKAnalyzer2012.jar
拷貝到項目的lib目錄中,個人目錄爲/home/pekxxoo/java/tomcat7.0.81/webapps/solr/WEB-INF/lib
IKAnalyzer.cfg.xml
與 stopword.dic
文件放置在 class 根目錄(對亍 web 項目,一般是WEB-INF/classes
目彔,同 hibernate、log4j 等配置文件相同)下便可。
修改core/conf/schema.xml
文件,添加配置信息以下:
<fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer" isMaxWordLength="false"/> <analyzer type="query" class="org.wltea.analyzer.lucene.IKAnalyzer" isMaxWordLength="true"/> </fieldType>
最後修改相應須要中文分詞的字段的type
類型便可:
<field name="title" type="text_ik" indexed="true" stored="true" multiValued="true"/>
重啓tomcat服務
若是以前已經建立了索引,須要將以前的索引刪掉,從新建立分詞後的索引。
遇到的問題:
在 Solr4.0 發佈之後,官方取消了 BaseTokenizerFactory 接口,而直接使用 Lucene Analyzer 標準接口。所以 IK分詞器 2012 FF 版本也取消了org.wltea.analyzer.solr.IKTokenizerFactory
類。
所以在下載的時候注意下載IK Analyzer 2012FF_hf1.zip
版本