使用PhpMyAdmin-MySQL设置DataImportHandler

时间:2018-12-11 18:45:27

标签: apache solr phpmyadmin

我正在尝试将phpmyadmin上的mysql数据库索引到solr中。

由@MatsLindh解决

我试图找到必要的信息,但没有找到有关此设置的教程。

我的数据库: 我的mysql数据库是本地托管的,可以通过phpmyadmin访问。这是管理页面。 phpmyadmin admin ui

如您所见,我有一个名为solrtest的数据库,其中的表solr具有字段ID,日期,问题和解决方案。

现在要链接我的数据库,在线教程有点不一致。最一致的部分告诉我,我将需要使用Solrs DataImportHandler和mysql-connector-java。另一个人也提到了jdbc插件。我已经将.jar文件安装并放在了solr / dist目录中。solr dist file 在某些教程中,它们也位于contrib文件夹中,但我留在/ dist中。

我的文件: 我创建了一个名为solrhelp的核心,并在solhelp / conf文件中进行了以下更改。

solrconfig.xml

<lib dir="C:\Program Files\Solr\solr-7.5.0\dist\" regex="solr-dataimporthandler-7.5.0.jar" />
  <lib dir="C:\Program Files\Solr\solr-7.5.0\dist\" regex="solr-dataimporthandler-extras-7.5.0.jar" />
  <lib dir="C:\Program Files\Solr\solr-7.5.0\dist\" regex="mysql-connector-java-8.0.13.jar" />
  <lib dir="C:\Program Files\Solr\solr-7.5.0\dist\" regex="sqljdbc41.jar" />
  <lib dir="C:\Program Files\Solr\solr-7.5.0\dist\" regex="sqljdbc42.jar" />
  <requestHandler name=" /dataimport" class=" org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name=" defaults">
    <str name=" config">data-config.xml</str>
    </lst>
  </requestHandler>
  <requestHandler name " /dataimport" class=org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="name">solrhelp</str>
      <str name="driver">jdbc:mysql.jdbc.Driver</str>
      <str name="url">jdbc:mysql://localhost:8983/solrtest</str>
      <str name="user">root</str>
      <str name="password"></str>
    </lst>
  </requestHandler>

创建的data-config.xml

<dataConfig>
<dataSource type="JdbcDataSource"
            driver="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:8983/solrtest"
            user="root"
            password=""/>
    <document>
    <entity name="solr"
            pk="id"
            query="select id, date, Problem, Solution from solr"
        >
        <field column="id" name="id"/>
        <field column="date" name="date"/>
        <field column="Problem" name="Problem"/>
        <field column="Solution" name="Solution"/>
    </entity>
    </document>
</dataConfig>

和managed-schema.xml

 <field name="id" type="string" indexed="true" stored="true" multiValued="false" />
  <field name="pdate" type="date" indexed="true" stored="true" multiValued="false" />
  <field name="Problem" type="text_general" indexed="true" stored="true" />
  <field name="Solution" type="text_general" indexed="true" stored="true" />

我对社区的问题相当广泛,我深表歉意。在尝试发布此数据库之前,我想知道我所缺少的一切。我认为我没有正确编辑我的文件,并且我真的不知道在尝试发布之前测试它们的方法。 应该注意的是,在dist文件夹中,我有两个版本的jdbc,并且在我的solrconfig.xml文件中都有。 向更好的教程或文档的任何方向将不胜感激。

更新的文件 solrconfig

  <lib dir="C:\Program Files\Solr\solr-7.5.0\dist\"
    regex="solr-dataimporthandler-7.5.0.jar" />
  <lib dir="C:\Program Files\Solr\solr-7.5.0\dist\"
    regex="solr-dataimporthandler-extras-7.5.0.jar" />
  <lib dir="C:\Program Files\Solr\solr-7.5.0\contrib\dataimporthandler\lib"
    regex="mysql-connector-java-8.0.13.jar" />
  <lib dir="C:\Program Files\Solr\solr-7.5.0\contrib\dataimporthandler\lib"
    regex="sqljdbc41.jar" />
  <lib dir="C:\Program Files\Solr\solr-7.5.0\contrib\dataimporthandler\lib"
    regex="sqljdbc42.jar" />

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

数据配置

<dataConfig>
<dataSource type="JdbcDataSource"
            driver="com.mysql.cj.jdbc.Driver"
            url="jdbc:mysql://localhost:8983/solrtest/solr"
            user="root"
            password=""/>
    <document>
    <entity name="solr"
            pk="id"
            query="select * from solr"
        >
        <field column="id" name="id"/>
        <field column="date" name="date"/>
        <field column="Problem" name="Problem"/>
        <field column="Solution" name="Solution"/>
    </entity>
    </document>
</dataConfig>

2 个答案:

答案 0 :(得分:1)

您不“通过phpmyadmin”导入。您可以使用与MySQL服务器的连接信息。没有涉及http。 jdbc:mysql://localhost:3306/dbname将是您的情况下的字符串,假设MySQL与您运行Solr的计算机在同一台计算机上。

请特别注意连接字符串和3306中的端口号(dbname)。它应该引用您的 MySQL 服务器的值,而不是Solr服务器的值。

答案 1 :(得分:0)

此问题已由@MatsLindh解决

我的问题是配置语法。下面是更正后的data-config.xml和solrconfig.xml

数据配置

<dataConfig>
<dataSource type="JdbcDataSource"
            driver="com.mysql.cj.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/solrtest"
            user="root"
            password=""/>
    <document>
    <entity name="solr"
            pk="id"
            query="select * from solr"
        >
        <field column="id" name="id"/>
        <field column="date" name="date"/>
        <field column="Problem" name="Problem"/>
        <field column="Solution" name="Solution"/>
    </entity>
    </document>
</dataConfig>

solrconfig

<lib dir="C:\Program Files\Solr\solr-7.5.0\dist\"
    regex="solr-dataimporthandler-7.5.0.jar" />
  <lib dir="C:\Program Files\Solr\solr-7.5.0\dist\"
    regex="solr-dataimporthandler-extras-7.5.0.jar" />
  <lib dir="C:\Program Files\Solr\solr-7.5.0\contrib\dataimporthandler\lib"
    regex="mysql-connector-java-8.0.13.jar" />
  <lib dir="C:\Program Files\Solr\solr-7.5.0\contrib\dataimporthandler\lib"
    regex="sqljdbc41.jar" />
  <lib dir="C:\Program Files\Solr\solr-7.5.0\contrib\dataimporthandler\lib"
    regex="sqljdbc42.jar" />

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