1. 程式人生 > >利用solr的 DataImportHandler從mysql資料庫建立索引

利用solr的 DataImportHandler從mysql資料庫建立索引

步驟1: 首先修改solrconfig.xml 加往上DataImportHandler的配置
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
  <str name="config">data-config.xml</str>
</lst>
</requestHandler>
步驟2:配置solr伺服器時一般報這個錯org.apache.solr.common.SolrException: RequestHandler init failure或java.lang.ClassNotFoundException: org.apache.solr.handler.dataimport.DataImportHandler異常。原因是找不到solr-dataimporthandler-4.4.0.jar這個jar包,預設不在solr.war包裡,在下載包的dist目錄下 我的做法是直接
solr-dataimporthandler-4.4.0.jar 與solr-dataimporthandler-extra-4.4.0.jar 兩個jar包放入solr-webapp\webapp\WEB-INF\lib目錄 mysql-connector-java-5.1.31.jar 也要放入該目錄下。 當然也可以利用solrconfig.xml中的lib標籤進行配置  <lib ...... /> 步驟3: 新建data-config.xml 檔案,到conf目錄下。示例如下 <dataConfig>   <dataSource type="JdbcDataSource"
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://199.xxx.xxx.xxx/quentinxxz_com"
              user="qqq"
              password="qqq"/>   <document>
    <entity name="product"
            query="select id, price,modify_time from tts_product">
       <field column="price" name="tts_price"/>
       <field column="modify_time" name="tts_modify_time"/>
    </entity>
  </document>
</dataConfig> 步驟4:再在schema.xml中加入field     <field name="tts_price" type="int" indexed="true" stored="true" />     
     <field name="tts_modify_time" type="date" indexed="true" stored="true" />       <response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">35</int> </lst> <lst name="initArgs"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </lst> <str name="command">full-import</str> <str name="status">idle</str> <str name="importResponse"/> <lst name="statusMessages"/> <str name="WARNING"> This response format is experimental. It is likely to change in the future. </str> </response> 當然也可能通過web ui介面進行索引操作