Solr5.5.5版本+IK Analysis的詞典及同義詞配置
我的Solr5.5.5是采用Jetty方法進行配置的
主要是配置三個文件
- /usr/solr/solr-5.5.5/server/solr/mycore(自己定義的core)/conf/schema.xml
- 配置域,自定義各種數據,並關聯solr里面的數據
- /usr/solr/solr-5.5.5/server/solr/mycore(自己定義的core)/conf/solrconfig.xml
- 定義了一些solr的處理規則,基礎配置文件
- 索引數據的存放位置
- 更新,刪除,查詢的一些規則配置
- /usr/solr/solr-5.5.5/server/solr/mycore(自己定義的core)/conf/data-config.xml(這個文件自己創建一個添加進去就好)
- 這個是solr關聯數據庫的一個文件
廢話不多說,上代碼
首先出場的是:data-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<!--數據庫-->
<dataSource name="test" type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test" user="root" password="password"/>
<document name="user">
<!--用戶表-->
<entity dataSource="test" name="user" pk="id" query="select * from user">
<field column="id" name="id"/>
<field column="title" name="title"/>
</entity>
<!--如果要添加同一個數據庫下的其他操作的話按照這個格式即可-->
<entity dataSource="test" name="xxxx" pk="xxxx" query="xxxxxx">
<field column="xxxx" name="xxx"/>
<field column="xxxxxx" name="xxxxx"/>
</entity>
</document>
</dataConfig>
踩坑點:
- dataSource標簽中的name必須和下面entity標簽中的dataSource屬性對應
- 一個dataSource下面只能有一個document但是可以有多個entity
- entity在配置的時候記得配置上主鍵(PK)
- entity中的每一個column都記得在schema.xml中配置
緊接着:schema.xml
<!-- 對數據庫中的字段進行配置 -->
<field name="title" type="text_iksyn" indexed="true" stored="true" />
<!-- 同義詞&IK分詞 -->
<field name ="text" type ="text_iksyn" indexed ="true" stored ="false" multiValued ="true"/>
<fieldType name="text_iksyn" class="solr.TextField">
<analyzer type="index" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" isMaxWordLength="false"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" isMaxWordLength="false" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
踩坑點:
- 對數據庫中的字段配置真的是很有必要的!!!並且如果你想要后面的某個屬性進行分詞的話一定要指定他的type和后面配置的ik分詞器中的一樣!!!!!
- IK分詞的時候注意上面的class一定不要錯,不然到時候Reload的時候必報錯
- index和query兩個最好都配置上
- 注意在配置同義詞的時候這個synonyms一定要對應好同義詞詞典
LowerCaseFilterFactory
是一個配置不區分大小寫的,可有可無
配置完這兩個之后可以順便把同義詞詞典給弄一下,見下面兩幅圖:
踩坑點:
保存的時候務必是utf-8,不然你會發現白弄了
可以用=>
來進行配置,但是這樣的話只能是左邊等同於右邊,比如輸入還行會出來還可以,但是輸入還可以那么還是還可以(這不是繞口令)
可以用英文的逗號進行分割,切記英文逗號!這樣的配置可以等價替換
最后就是solrconfig.xml啦
<!-- 隨便找個地方加上就好 -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler" >
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
截至到此差不多就可以啦,可別說你不知道ik該放在什么目錄!好吧,起始剛開始我也不知道(/▽\=)
IK分詞器怎么配置
將IK的jar包放到/usr/solr/solr-5.5.5/server/solr-webapp/webapp/WEB-INF/lib
目錄下
將ext.dic、IKAnalyzer.cfg.xml、stopword.dic復制到/usr/solr/solr-5.5.5/server/solr-webapp/webapp/WEB-INF/classes
目錄下(classes自行創建)
IKAnalyzer.cfg.xml中的內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 擴展配置</comment>
<!-- 用戶可以在這里配置自己的擴展字典 -->
<entry key="ext_dict">ext.dic;</entry>
<!--用戶可以在這里配置自己的擴展停止詞字典-->
<entry key="ext_stopwords">stopword.dic;</entry>
</properties>
踩坑點:
擴展詞詞典和停用詞詞典一定要是utf-8格式的!
在剛下載下來的ext.dic配置擴展詞詞典的那句話是被注釋掉的!千萬記得去看一眼,一眼就好!
q(≧▽≦q)這下真的就結束啦!感謝觀看!歡迎指正!