DataImportHandler没有在solr admin中索引mysql表 [英] DataImportHandler is not indexing mysql table in solr admin

查看:93
本文介绍了DataImportHandler没有在solr admin中索引mysql表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用DataImportHandler在solr中索引mysql表,但似乎没有索引

I am trying to index the mysql table in solr using DataImportHandler, but it's seems not indexing

data-config.xml

 <?xml version="1.0" encoding="UTF-8" ?>
    <dataConfig>
      <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
                  url="jdbc:mysql://localhost/solr_tut" 
                  user="root" 
                  password=""/>
      <document>
        <entity name="product_id" 
                query="select product_id,name,description from products">
        </entity>
      </document>
    </dataConfig>

solrconfig.xml

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


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

当我尝试在solr admin(http://localhost:8080/solr/dataimport?command=full-import)中建立索引时,得到此响应

When i try to index in solr admin(http://localhost:8080/solr/dataimport?command=full-import) i am getting this response

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">19</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="Total Requests made to DataSource">1</str>
   <str name="Total Rows Fetched">4</str>
   <str name="Total Documents Skipped">0</str>
   <str name="Full Dump Started">2014-01-10 10:38:00</str>
   <str name="">
     Indexing completed. Added/Updated: 0 documents. Deleted 0 documents.
   </str>
   <str name="Committed">2014-01-10 10:38:00</str>
   <str name="Total Documents Processed">0</str>
   <str name="Time taken">0:0:0.33</str>
</lst>
<str name="WARNING">
This response format is experimental. It is likely to change in the future.
</str>
</response>

如果我搜索(http://localhost:8080/solr/select?q=*:*)之后,我得到0个结果.

After if i search(http://localhost:8080/solr/select?q=*:*), i am getting 0 result.

更新1: schema.xml

推荐答案

您只是错过了结果集中的列到文档字段的映射.您需要在data-config.xmlentity元素内执行此操作.

You just missed the mapping of the columns in the result set to the documents fields. You need to do that within the entity element of your data-config.xml.

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
  <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost/solr_tut" 
              user="root" 
              password=""/>
  <document>
    <entity name="product_id" 
            query="select product_id,name,description from products">

 <!-- this is the place where you map the columns of your result set
      to fields of the new solr document -->

        <field column="PRODUCT_ID" name="id" />
        <field column="NAME" name="name" />
        <field column="DESCRIPTION" name="description" />

    </entity>
  </document>
</dataConfig>

在您的情况下,您错过了一个重要的映射. product_idid.如果列名和架构中字段的名称相等(如Wiki所写),Solr可以自动检测映射

In your case there is one vital mapping you missed. product_id to id. Solr can autodetect mappings, if the column name and the name of the field in the schema are equal, as is written in the wiki

在上面的示例中,存在字段到Solr字段的映射.如果字段名称与Solr模式中的字段名称相同(大小写无关),则可以完全避免实体中的字段输入.

In the above example, there are mappings of fields to Solr fields. It is possible to totally avoid the field entries in entities if the names of the fields are same (case does not matter) as those in Solr schema.

但是,正如您所说,情况并非如此. product_idid确实有所不同.由于您的id字段为required,因此这些文档将不会进入索引.

But as said, in your situation that is not the case. product_id and id do differ. Since your id field is required those documents will not make it into the index.

有关更多信息,请参见Solr的Wiki中有关DataImportHandler的 或在参考中指南.

More information can be found in Solr's Wiki about the DataImportHandler or in the reference guide.

这篇关于DataImportHandler没有在solr admin中索引mysql表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆