1. 先在本地的solr_db庫下建一張solr_tb表(字段:id,name,price,desc),添加了5條數據,如下圖。
建立數據表
2. 還記得上篇中安裝solr的目錄結構嗎?打開D:\phpServer\solr\solr1\home\collection1\conf目錄,暫且稱這個目錄為“配置文件目錄”了。打開配置文件目錄下的solrconfig.xml文件,在此文件的<config></config>標簽之間的任一地方(最好是前面)添加如下代碼:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
配置dataimport
3. 在當前目錄下新建一個名為data-config.xml的文件,在文件中添加如下配置信息,此信息為你要連接的mysql庫的信息,請如實填寫(數據庫為solr_db,數據表為solr_tb)。
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1/solr_db"
user="root"
password="root" />
<document>
<entity name="solr_tb" transformer="DateFormatTransformer"
query="select id,name FROM solr_tb where id >= ${dataimporter.request.id}">
</entity>
</document>
</dataConfig>
4. 找到同級目錄下面的schema.xml(字段配置)文件,先將此文件備份一下,然後打開schema.xml,全選->刪除,再將下面這段粘貼到schema.xml文件中。因為我們暫時用不到那麼多參數,所以為了便於初學和理解,簡化了一下。
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="example" version="1.5">
<!-- 要建立的索引,_version_這個不能省略 -->
<fields>
<field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
<field name="name" type="text_general" indexed="true" stored="true" />
<field name="_version_" type="long" indexed="true" stored="true"/>
</fields>
<!-- 字段類型,配置上面字段<field>中出現的類型即可 -->
<types>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
<!-- text_general能對中文分詞 -->
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
</types>
<!-- 唯一字段 -->
<uniqueKey>id</uniqueKey>
<!-- 設置默認查詢字段,設置此處為name後,還要在solrconfig.xml中設置name="/select"中為<str name="df">name</str>。-->
<defaultSearchField>name</defaultSearchField>
<!-- 查詢轉換模式,是並且還是或者(and/or) -->
<solrQueryParser defaultOperator="OR"/>
</schema>
說明一下:“<fields>”標簽,就是配置你要建立索引的字段。我現在需要建立id,name兩個字段,
即 <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/> 和 <field name="name" type="text_general" indexed="true" stored="true" /> 也就是對應第3步中select id,name FROM solr_tb這裡的字段。了解一下fields標簽。
5.在D:\phpServer\solr\dist目錄中復制solr-dataimporthandler-4.7.0.jar、solr-dataimporthandler-extras-4.7.0.jar和mysql-connector-java-5.1.7-bin.jar(這個沒有?點擊下載)復制到D:\phpServer\solr\solr1\tomcat\webapps\solr\WEB-INF\lib目錄中。
6.重啟tomcat服務,訪問http://localhost:8080/solr/,在左側的菜單中的下拉選擇collection1,然後再載入的菜單中選擇Dataimport選項,是不是已經出現了如下圖所示的界面呢。如果出現則表示成功了。接著按如下圖的指示,現在開始導入數據吧!
注:Custom Parameters 參數是第3步select語句中的id >= ${dataimporter.request.id},這裡填id=1,即從id為1的數據開始導入,這樣對於數據較大的表,可以控制分成幾步導入。
Clean選項表示是否刪除未匹配到的數據,也就是在數據庫select結果中沒有,而solr索引庫中存在的時候,則刪除。
8.出現如下圖所示的界面則表示導入成功了。
9.現在點擊左側的Query切換到查詢頁面,查看一下吧。