繁体   English   中英

Solr DataImportHandler外部表

[英]Solr DataImportHandler foreign tables

我已经建立了一个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中它仅是第一行。

怎么了 请帮忙

尝试使用如下所示的联接进行单个查询

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个实体用于其中有一个连接查询的实体。

谢谢,但是可以这样做吗? 当我尝试它时,我得到3行具有相同的ID。 id是solr的pk。

由于内容很大,目前我使用SELECT GROUP_CONCAT(content),我将其放在一个过程中

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}')">

它有效,但是我对此不满意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM