1

私はsolr 4.2を使用しています。フル インポートは機能しますが、なぜかデルタ インポートは機能しないことに注意してください。差分インポートではエラーは発生しませんが、変更がフェッチされることはありません。ここにデータ構成ファイルがあります。

<dataConfig> 
<dataSource type="JdbcDataSource" 
                   driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
                   url="jdbc:sqlserver:testsql;databaseName=test" 
                   user="dba" 
                   password="dba"/> 


  <script>
    <![CDATA[
    function metadataTransformer (row) {
        var attributeName = row.get("attribute_name");
        var attributeValue = row.get("attribute_value");
        row.put(attributeName, attributeValue);

        return row;
    }
    ]]>
  </script>

<document name="PRODUCTS">

<entity name="product" query="select distinct  p.product_id as id from products p
                              inner join products_meta pm on p.product_id = pm.product_id
                              inner join meta m on pm.meta_id = m.meta_id
                              where m.meta_type_id = 11 order by id desc" 

deltaImportQuery="select distinct  p.product_id as id from products p
                              inner join products_meta pm on p.product_id = pm.product_id
                              inner join meta m on pm.meta_id = m.meta_id
                              where m.meta_type_id = 11 and p.product_id='${dih.delta.product_id}'"

deltaQuery= "select distinct  product_id as id from products 
                              where updtime > '${dih.last_index_time}'">

<field column="id" name="id"/> 

<entity name="attribute" query="select attribute_name,attribute_value from solr_import
                                where id =${product.id}" transformer= "script:metadataTransformer">

</entity>
</entity>

</document> 
</dataConfig>

これが私が運なしで試したことです。

p.product_id='${dih.delta.product_id} を p.product_id='${dih.delta.id} に変更し、その他の方法も変更します。where updtime > '${dih.last_index_time}'" を where updtime > '${dih.last_index_time}'" に変更します

助けてください。

4

2 に答える 2

1

これは修正されました。問題はsolrボックスがUTCタイムゾーンにあったことでした。それをETタイムゾーンに変換すると、デルタインポートが正常に機能し始めました。これが他の誰かに役立つことを願っています。

于 2013-09-09T16:27:16.760 に答える
0

${dih.last_index_time} (サーバーの時刻設定の問題) を使用したくない場合は、次のような mysql クエリを試すことができます。

deltaImportQuery="SELECT * FROM table_name where id='${dataimporter.delta.id}'"
deltaQuery="select id from table_name where update_time  > SUBTIME( NOW( ) , '0:15:0' )

私はcrontabで使用し、うまくいきました!

于 2013-09-18T16:36:01.633 に答える