2017-03-02 10 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では最初の行だけです。

ここで何が間違っていますか?

<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> 

答えて

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"/> 

などの分野を持って使用して単一のクエリを持っているようにしてください助けてください必要に応じて独自のクエリを作成することができます。ただ2つのエンティティの代わりにそれを伝えたいだけでしたジョイン・クエリーがある場所に行きます。

0

ありがとうございますが、これは可能ですか? 私はそれを試してみると、私は同じIDを持つ3行を取得します。 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 

と私は

<entity name="text" query="call msp_bla('${article.id}')"> 
を使用私のデータ-config.xml内にそれを置きます

これは機能しますが、それに満足していません。

関連する問題