我想使用数据导入处理程序在solr中索引mysql数据库。
我已经制作了两张桌子。第一个表保存文件的元数据。create table filemetadata (
id varchar(20) primary key ,
filename varchar(50),
path varchar(200),
size varchar(10),
author varchar(50)
) ;
+-------+-------------+---------+------+---------+
| id | filename | path | size | author |
+-------+-------------+---------+------+---------+
| 1 | abc.txt | c:\files| 2kb | eric |
+-------+-------------+---------+------+---------+
| 2 | xyz.docx | c:\files| 5kb | john |
+-------+-------------+---------+------+---------+
| 3 | pqr.txt |c:\files | 10kb | mike |
+-------+-------------+---------+------+---------+
第二个表包含上表中特定文件的“收藏”信息。
create table filefav (
fid varchar(20) primary key ,
id varchar(20),
favouritedby varchar(300),
favouritedtime varchar(10),
FOREIGN KEY (id) REFERENCES filemetadata(id)
) ;
+--------+------+-----------------+----------------+
| fid | id | favouritedby | favouritedtime |
+--------+------+-----------------+----------------+
| 1 | 1 | ross | 22:30 |
+--------+------+-----------------+----------------+
| 2 | 1 | josh | 12:56 |
+--------+------+-----------------+----------------+
| 3 | 2 | johny | 03:03 |
+--------+------+-----------------+----------------+
| 4 | 2 | sean | 03:45 |
+--------+------+-----------------+----------------+
这里“id”是一个外键。第二个表显示哪个人已经将哪个文件标记为他/她的最爱。例如,由id = 1表示的文件abc.txt已被标记为收藏夹(参见列favouritedby)罗斯和乔什。
我想按如下方式索引文件:
每个文档都应包含以下字段
id - to be taken from the first table filemetadata
filename - to be taken from the first table filemetadata
path - to be taken from the first table filemetadata
size - to be taken from the first table filemetadata
author - to be taken from the first table filemetadata
Favouritedby - this field should contain the names of all the people from table 2 filefav (from the favouritedby column) who like that particular file.
例如,在索引doc 1之后应该有
id = 1
filename = abc.txt
path = c:\files
size = 2kb
author = eric
favourited by - ross , josh
我如何实现这一目标?
我编写了一个data-config.xml(没有给出所需的结果),如下所示
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" user="root" password="root" />
<document name="filemetadata">
<entity name="restaurant" query="select * from filemetadata">
<field column="id" name="id" />
<entity name="filefav" query="select favouritedby from filefav where id=${filemetadata.id}">
<field column="favouritedby" name="favouritedby1" />
</entity>
<field column="filename" name="name1" />
<field column="path" name="path1" />
<field column="size" name="size1" />
<field column="author" name="author1" />
</entity>
</document>
</dataConfig>
任何人都可以解释我是如何实现这一目标的?