2017-03-02 51 views
0

我建立一个Solr的指数喜欢这里: https://wiki.apache.org/solr/DataImportHandlerSolr的DataImportHandler外国表

我曾经在我的数据-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

尝试有使用加入类似下面

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个实体去一个你会有一个连接查询。

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 

在我的数据-config.xml中我使用

<entity name="text" query="call msp_bla('${article.id}')"> 

它的工作原理,但我不满意。

相关问题