1、首先下載Solr、mmseg4j分詞包、tomcat並解壓,這用google、百度都可以搜索得到下載地址。
2、因為要使用到中文分詞,所以要設置編碼,進入tomcat安裝目錄,使用vi修改confserver.xml配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
增加 URIEncoding="UTF-8"設置編碼為utf-8。
3、將下載的solr包下面dist文件夾中的apache-solr-*.war 拷貝到 tomcat的webapps 並且改名為 solr.war
cp /opt/apache-solr-3.6.1/dist/apache-solr-3.6.1.war /opt/apache-tomcat-6.0.35/webapps/solr.war
4、將下載的solr包下面example文件夾中的solr文件拷貝到/opt目錄下
cp -r /opt/apache-solr-3.6.1/example/solr/ /opt
5、配置環境變量solr.home,使用vi修改/etc/profile,增加以下代碼,配置永久變量,重啟reboot
export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr"
6、啟動tomcat服務,然後訪問http://127.0.0.1:8080/solr/
出現如下頁面,表示配置成功
7、配置中文分詞,將mmseg4j目錄下的一個jar包復制到solr/WEB-INF/lib/目錄下讓solr使用,這裡必須先運行一遍才會產生solr文件夾
cp /opt/mmseg4j/mmseg4j-all-1.8.3.jar /opt/apache-tomcat-6.0.35/webapps/solr/WEB-INF/lib/
8、配置中文詞庫
cp /opt/mmseg4j/data/words.dic /opt/solr/dic/
9、更改schema.xml (/opt/solr/conf/schema.xml) 文件,使分詞器起到作用。
<!--mmseg4j field types-->
<fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="/opt/solr/dic"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="textMaxWord" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="/opt/solr/dic"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="textSimple" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="/opt/solr/dic"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
10、http://127.0.0.1:8080/solr/admin/analysis.jsp
點擊Analyze查看分詞效果
11、配置mysql數據庫
首先要導入連接mysql的jar包mysql-connector-java-5.1.7-bin.jar
我是放在tomcat的lib目錄下
touch /opt/solr/conf/mysql.xml
將下面內容寫入mysql.xml中
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://10.10.150.116/travel_main" user="new_travel_u" password="123045"/>
<document name="user_core">
<entity name="user_core" query="select * from user_core" pk="userId"
deltaQuery ="select userId from user_core where editTime > '${dataimporter.last_index_time}'">
<field column="userId" name="id" />
<field column="nickname" name="nickname" />
</entity>
</document>
</dataConfig>
solrconfig.xml的<fields>必須有和數據庫字段相對應的子元素,我這裡新增了個nickname
<field name="nickname" type="string" indexed="true" stored="true" />
再配置solrconfig.xml文件,在<config>節點下新增一個節點
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">/opt/solr/conf/mysql.xml</str>
</lst>
</requestHandler>
再把<lib>標簽的路徑修改下,不然可能會找不到相應的jar包
<lib dir="/opt/apache-solr-3.6.1/dist/" regex="apache-solr-cell-\d.*\.jar" />
<lib dir="/opt/apache-solr-3.6.1/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="/opt/apache-solr-3.6.1/dist/" regex="apache-solr-clustering-\d.*\.jar" />
<lib dir="/opt/apache-solr-3.6.1/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="/opt/apache-solr-3.6.1/dist/" regex="apache-solr-dataimporthandler-\d.*\.jar" />
<lib dir="/opt/apache-solr-3.6.1/contrib/dataimporthandler/lib/" regex=".*\.jar" />
<lib dir="/opt/apache-solr-3.6.1/dist/" regex="apache-solr-langid-\d.*\.jar" />
<lib dir="/opt/apache-solr-3.6.1/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="/opt/apache-solr-3.6.1/dist/" regex="apache-solr-velocity-\d.*\.jar" />
<lib dir="/opt/apache-solr-3.6.1/contrib/velocity/lib" regex=".*\.jar" />
12、重啟tomcat
/opt/apache-tomcat-6.0.35/bin/shutdown.sh
/opt/apache-tomcat-6.0.35/bin/startup.sh
13、浏覽器輸入網址
http://127.0.0.1:8080/solr/dataimport?command=full-import
新增全量索引,然後進入
http:// 127.0.0.1:8080/solr/admin/
查詢便得出結果
可以定時調度增加增量索引
http:// 127.0.0.1:8080/solr/dataimport?command=delta-import