我在这里构建一个solr-index: https://wiki.apache.org/solr/DataImportHandler
我在data-config.xml中使用了类似的东西:
<entity name="article" pk="id" query="Select * from msp_article">
<field column="id" name="id"/>
<field column="title" name="docTitle"/>
<field column="orgRef" name="ref" />
<entity name="text" query="select content from msp_articleText where fk_articleId='${article.id}'">
<field column="content" name="textContent"/>
</entity>
</entity>
当查看我的数据库并测试密钥时,我进入msp_articleText 3行,但在solr-index中只有第一行。
这里有什么问题? 请帮忙
答案 0 :(得分:0)
尝试使用下面的连接进行单个查询
Select * from msp_article ma, msp_articleText mat where mat.fk_articleId = ma.msp_article.id
然后有像
这样的字段<field column="id" name="id"/>
<field column="title" name="docTitle"/>
<field column="orgRef" name="ref" />
<field column="content" name="textContent"/>
应该是这样的:
<entity name="article" pk="id" query="Select * from msp_article , msp_articleText where fk_articleId = msp_article.id">
<field column="id" name="id"/>
<field column="title" name="docTitle"/>
<field column="orgRef" name="ref" />
<field column="content" name="textContent"/>
</entity>
您可以根据需要构建自己的查询,我只是想传达一下,而不是2个实体去一个您将有连接查询的实体。
答案 1 :(得分:0)
谢谢,但这可以吗? 当我尝试它时,我得到3行相同的ID。 id是solr的pk。
目前我使用SELECT GROUP_CONCAT(内容) 因为内容很大,我把它放在一个程序中
CREATE PROCEDURE `msp_bla`(IN con CHAR(20))
BEGIN
SET SESSION group_concat_max_len = 1000000;
SELECT GROUP_CONCAT(content) as content from msp_articleText WHERE fk_articleId = con group by fk_articleId;
END
在我的data-config.xml中,我使用
<entity name="text" query="call msp_bla('${article.id}')">
它有效,但我对此并不满意。