準備tomcat壓縮包和solr壓縮包
解壓出來後
- 將 solr 壓縮包中 solr-5.3.0\server\solr-webapp\文件夾下有個webapp文件夾,將之複製到Tomcat\webapps\目錄下,文件夾名改成solr ;
3、將 solr 壓縮包中 solr-5.3.0\server\lib\ext 中的 jar 全部複製到 Tomcat\ webapps\solr\WEB-INF\lib 目錄中;
4、將 solr 壓縮包中 solr-5.3.0/ server/resources /log4j.properties 複製到
在Tomcat\ webapps\solr\WEB-INF下創建classes然後把log4j.properties 放到classes目錄中;
在把solr/server/lib下metrics開頭的5個jar拷到tomcat\webapps\solr\WEB-INF\lib下
將solr-5.3.0/dist中的solr-dataimporthandler、solr-dataimporthandler-extras的jar包複製到tomcat\webapps\solr\WEB-INF\lib下;
.去掉權限,tomcat 裏的 solr下的web.xml ,在最下面
5、將 solr 壓縮包中 solr-5.3.0/server/solr 目錄複製到計算機某個目錄下,如D:\solr-home(solr創建的core到時會存放在該目錄下);
6、打開Tomcat/webapps/solr/WEB-INF下的web.xml,找到如下配置內容(初始狀態下該內容是被註釋掉的):(注意斜槓)
啓動Tomact
8、在D:\testsolr\solr_home下創建my_core文件夾(名稱與下圖的instanceDir一致,建議下圖中的name也和該文件夾名一致);
9、在my_core文件夾下創建data和conf文件夾;
10、將solr-5.3.0\example\example-DIH\solr\solr\conf所有文件和文件夾都copy到D:\testsolr\solr_home\my_core\conf下;
添加分詞器配置
在conf文件下,把managed-schema複製一份然後,修改成schema.Xml
在羣裏下載mmseg4j 壓縮包
- 將文件裏的jar包拷貝到Tomcat\webapps\solr\WEB-INF\lib下;
2、在 D:\testsolr\solr_home\solr\ 目錄下新建一個 dic 文件夾 , 把mmseg4j 壓縮包裏(data文件夾下)拷貝到 dic 目錄下;
3、在 D:\testsolr\solr_home\solr\my_core\conf\schema.xml 文件的裏添加如下:
<fieldtype name="textComplex" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="D:/testsolr/solr_home/solr/dic"> </tokenizer> </analyzer> </fieldtype> <fieldtype name="textMaxWord" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="maxword" dicPath="D:/testsolr/solr_home/solr/dic"> </tokenizer> </analyzer> </fieldtype> <fieldtype name="textSimple" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="D:/testsolr/solr_home/solr/dic"> </tokenizer> </analyzer> </fieldtype>
<field name="name" type="textMaxWord" indexed="true" stored="true" multiValued="true" /> <field name="description" type="textMaxWord" indexed="true" stored="true" multiValued="true" />
連接數據庫
首先將mysql 相關jar包 mysql-connector-java-5.1.30.jar 引入Tomcat\webapps\solr\WEB-INF\lib
在MySql數據庫中新建一張表。我這裏用的是Navicat管理工具進行創建的。這裏的表名是goods。字段如下圖所示:
在solr-home\my_core\conf下的solrconfig.xml的 <requestHandler name="/select" class="solr.SearchHandler">之上添加
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
然後在conf下新建data-config.xml文件。裏面內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/solrdata" user="root" password="220316" batchSize="-1" />
<document>
<entity name="goods" pk="id" dataSource="source1"
query="select * from goods"
deltaImportQuery="select * from goods where id='${dih.delta.id}'"
deltaQuery="select id from goods where updateTime> '${dataimporter.last_index_time}'">
<field column="id" name="id"/>
<field column="name" name="name"/>
<field column="number" name="number"/>
<field column="updateTime" name="updateTime"/>
</entity>
</document>
</dataConfig>
在conf文件下schema.Xml添加field信息:
<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="name" type="string" indexed="true" stored="false"/>
<field name="number" type="int" indexed="true" stored="false"/>
<field name="updateTime" type="date" indexed="true" stored="true" />
<field name="_version_" type="long" indexed="true" stored="false"/>
<field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
<field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>