萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> solr從數據庫導入數據的例子

solr從數據庫導入數據的例子

Solr是一個獨立的企業級搜索應用服務器,它對外提供類似於Web-service的API接口。用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML文件,下面我們就一起來看一篇簡單的solr從數據庫導入數據的例子

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選項,是不是已經出現了如下圖所示的界面呢。如果出現則表示成功了。接著按如下圖的指示,現在開始導入數據吧!




solr導入數據

 

  注:Custom Parameters 參數是第3步select語句中的id >= ${dataimporter.request.id},這裡填id=1,即從id為1的數據開始導入,這樣對於數據較大的表,可以控制分成幾步導入。


Clean選項表示是否刪除未匹配到的數據,也就是在數據庫select結果中沒有,而solr索引庫中存在的時候,則刪除。

 

8.出現如下圖所示的界面則表示導入成功了。




導入數據成功

 

  9.現在點擊左側的Query切換到查詢頁面,查看一下吧。




結果1




結果2

copyright © 萬盛學電腦網 all rights reserved