http://quentinxxz.iteye.com/blog/2100619
http://quentinxxz.iteye.com/blog/2100619
本文所有实验在solr4.4上进行
quickStart 参考 http://wiki.apache.org/solr/DIHQuickStart
步骤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"/>
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>
<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" />
<field name="tts_modify_time" type="date" indexed="true" stored="true" />
步骤5: 访问http://solr-host:port/solr/dataimport?command=full-import 进行一步全量索引。默认情况下,索引先被全部清除。如果你不想清除可加入参数clean=false. http://solr-host:port/solr/dataimport?command=full-import&clean=false
<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界面进行索引操作
微信公众号: 架构师日常笔记 欢迎关注!