dataimport无法从mysql工作到solr

时间:2014-03-01 09:47:07

标签: solr

正确配置了一切。但是当我从mysql运行导入到solr并尝试索引它们时,它会说: -

Indexing completed. Added/Updated: 0 documents. Deleted 0 documents.
Requests: 1, Fetched: 25, Skipped: 0, Processed: 0
Started: about a minute ago

这是我的xml文件: - 的 DB-数据-config.xml中

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
    <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/delance" user="root" password="pass" batchSize="1"/>
     <document name="Jobs">
    <entity name="Jobs" query="select * from Jobs">
         <field name="job_title" column="job_title" />
    </entity>
    </document>
</dataConfig> 

schema.xml中

<field name="job_title" type="string" indexed="true" stored="true"/>   

职位表

Jobs    CREATE TABLE `Jobs` (                                                                         
          `job_id` int(11) NOT NULL AUTO_INCREMENT,                                                   
          `description` longtext,                                                                     
          `job_date` varchar(100) DEFAULT NULL,                                                       
          `job_hash` varchar(32) NOT NULL,                                                            
          `job_title` varchar(500),                                                                           
          `time_limit` varchar(50) DEFAULT NULL,                                                      
          `users_user_id` int(11) DEFAULT NULL,                                                       
          PRIMARY KEY (`job_id`),                                                                     
          KEY `FK2350763B6AF29A` (`users_user_id`),                                                   
          CONSTRAINT `FK2350763B6AF29A` FOREIGN KEY (`users_user_id`) REFERENCES `Users` (`user_id`)  
        ) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=latin1 

3 个答案:

答案 0 :(得分:2)

您好使用的字段job_title不是既不需要的唯一键,因此您应该使用id required键并将其设置为唯一键,或者您应该将唯一键配置为自动递增。

然而要正确地遵循这个: id字段是默认定义的,检查它是否在schema.xml中,并且它被定义为唯一键,如下所示:

<fields> <field name="id" type="string" indexed="true" stored="true" required="true"/> <field name="job_title" type="string" indexed="true" stored="true"/> <!-- other fields definition ... --> </fields> <uniqueKey>id</uniqueKey>

并且在您的实体查询中,您应该索引一个'id',它是db表的唯一,如下所示:

<document name="Jobs"> <entity name="Jobs" query="select * from Jobs"> <!-- id here should be stirng, or you can change its type in its definition in the schema.xml --> <field name="id" column="table_id" /> <field name="job_title" column="job_title" /> </entity> </document>

这应解决此问题:)

答案 1 :(得分:1)

你不需要任何唯一的密钥。 所以你可以创建一个自动增量所需的id,或者创建一个并将其添加为实体字段。

答案 2 :(得分:0)

如果您已将ID定义为架构中的唯一键,则需要在数据导入期间提供该值

<field name="id" column="job_id" />