我正在尝试使用 Solr 的数据导入处理程序跨多个表索引数据。DIH 上的官方 wiki建议使用嵌入式实体来链接多个表,如下所示:
<document>
<entity name="item" pk="id" query="SELECT * FROM item">
<entity name="member" pk="memberid" query="SELECT * FROM member WHERE memberid='${item.memberid}'>
</entity>
</entity>
</document>
另一种有效的方法是:
<document>
<entity name="item" pk="id" query="SELECT * FROM item INNER JOIN member ON item.memberid=member.memberid">
</entity>
</document>
这两种方法在功能上是否不同?有性能差异吗?我的猜测是第一种方法是支持非 SQL 表,但我不确定。
另一个问题是,如果在 MySQL 中使用连接表,使用带有多个连接的 SQL 查询方法可能会导致多个文档被索引而不是一个。