正确配置了一切。但是当我从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
答案 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" />