如何使用Solr数据导入处理程序索引MySQL表?

时间:2012-04-27 01:49:32

标签: mysql solr lucene dataimporthandler

当我尝试通过在浏览器中加载它来导入mysql表时:

http://192.168.136.129:8983/solr/dataimport?command=full-import

我收到此错误:

HTTP ERROR 404

Problem accessing /solr/dataimport. Reason:

    NOT_FOUND

Powered by Jetty://

我在官方Solr wiki上关注本教程,开始使用DIH:

http://wiki.apache.org/solr/DIHQuickStart

根据教程,我将其添加到我的solrconfig.xml:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  <lst name="defaults">
    <str name="config">data-config.xml</str>
  </lst>
</requestHandler>  

在data-config.xml中我有以下内容:

<dataConfig>
  <dataSource type="JdbcDataSource" 
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost/site" 
              user="root" 
              password="123"/>
  <document>
    <entity name="profiles" 
            query="select user_id,about,music,movies,occupation from profiles">
    </entity>
  </document>
</dataConfig>

这些是我在schema.xml中定义的字段:

  <fields>
    <field name="user_id" type="string" indexed="true" stored="true" required="true" />
    <field name="about" type="string" indexed="true" stored="true" />
    <field name="music" type="string" indexed="true" stored="true" />
    <field name="movies" type="string" indexed="true" stored="true" />
    <field name="occupation" type="string" indexed="true" stored="true" />  
    <field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
  </fields>

  <uniqueKey>user_id</uniqueKey>

那么我做错了什么?我想它可能与data-config.xml文件有关。在其中我不知道是否正在假设某个MySQL驱动程序的路径。我从这里下载了MySQL JDBC驱动程序:

http://dev.mysql.com/downloads/connector/j/3.1.html

并将其放在我的/solr/lib目录中。

当我下载驱动程序并将其解压缩后,一个文件夹中有一堆名为&#34; mysql-connector-java-3.0.17-ga&#34;。

我注意到里面有一个名为com的目录,在mysql内部和jbdc内部,里面有一个名为Driver.class的文件。

这是从data-config.xml引用的吗?如果是这样,为什么没有提到的初始目录。

基本上我不知道问题是什么,有人可以帮忙。

5 个答案:

答案 0 :(得分:5)

确保在solrconfig.xml文件中有这些代码行

<lib dir="../../../contrib/dataimporthandler/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-dataimporthandler-\d.*\.jar" />

确保那些jar文件和那些jar文件的路径应该在该路径上物理可用。如果你没有,那么请添加它并尝试重新启动tomacat服务器,希望它将得到解决。

答案 1 :(得分:1)

我知道这个问题已经过时但我最近有机会设置它并使用Bitnami(Windows)遇到类似的问题。

  1. \dist中确保您拥有 dataimporter mysqlconnector
  2. 的solr-dataimporthandler-4.9.0.jar

    MySQL的连接器的Java-5.1.32-bin.jar

    1. \contrib\dataimporthandler\lib

      激活1.1.1.jar

      邮件1.4.3.jar

    2. 在你的集合中,solrconfig.xml应该有

      <lib dir="../../contrib/dataimporthandler/lib/" regex=".*\.jar" />
      <lib dir="../../dist/" regex="solr-dataimporthandler-.*\.jar" />  
      <lib dir="../../dist/" regex="mysql-connector-java-.*\.jar"/>  
      
    3.   <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
          <lst name="defaults">
            <str name="config">db-data-config.xml</str>
          </lst>
        </requestHandler>
      

答案 2 :(得分:0)

您收到NOT_FOUND错误的事实意味着您的请求处理程序未被初始化。插入请求处理程序后,请确保重新启动solr。

还要确保将data-config.xml保存在与solrconfig.xml相同的目录中

答案 3 :(得分:0)

尝试将data-config.xml位置的绝对路径放在solrconfig.xml而不是相对路径中。

答案 4 :(得分:0)

看起来您在Solr / lib文件夹中缺少'DataImportHandler.jar',或者您的solr-conf.xml文件不知道DataImportHandler类。

确保DataImportHandler存在,检查 点击

"http://localhost/solr/dataimport" ,

如果您的浏览器上没有任何错误消息,则表示solr-conf.xml不知道SolrDataImportHandler.jar的位置

解决方案:使用以下代码行来解决问题:solr-conf.xml

</requestHandler>
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

有关详细信息,请查看this

可能存在初始配置不完美的情况,请在开始导入前查看Here to configure solr