2

Solr 4.0を稼働させ、DataImportHandlerを使用してMySQLからデータをインポートしています。

DataImportHandlerをMySQL5.5データソースに向けると、すべてが期待どおりに機能することに気づきました。ただし、まったく同じSolr / DataImportHandler構成とまったく同じデータベースを使用しているが、MySQL 5.0で実行している場合、特定のフィールドはbase64エンコードで返されます。

data-config.xmlの関連エントリ

       <dataSource type="JdbcDataSource" 
                    driver="com.mysql.jdbc.Driver" 
                    name="DB-SOURCE"
                    url="jdbc:mysql://dbhost/dbname"
                    user="user"    
                    password="password"
    />

   <document name="articles">
<entity name="article_ph" transformer="HTMLStripTransformer" dataSource="DB-SOURCE" pk="article_id" 
                            query="SELECT 'Politics Home' AS article_site, 
                                            CONCAT('ph-article-', article_id) AS article_id,
                                            article_title,
                                            article_text_plain AS article_content,
                                            article_articletype_id,
                                            article_datetime AS article_date,
                                            'Uncategorised' AS article_section,
                                            'Non Member' AS article_source
                                            FROM articles 
                                            WHERE 
                                            article_datetime!='0000-00-00 00:00:00' 
                                            AND article_datetime is NOT NULL 
                                            AND article_live=1 
                                            AND article_text_plain!='' 
                                            AND article_text_plain IS NOT NULL 
                                            AND article_title is NOT NULL
                                            AND article_title !=''">
            <field column="ARTICLE_SITE" name="article_site" />
            <field column="ARTICLE_ID" name="article_id" />
            <field column="ARTICLE_TITLE" name="article_title" />
            <field column="ARTICLE_CONTENT" name="article_content" stripHTML="true" />
            <field column="ARTICLE_DATE" name="article_date" />
            <field column="ARTICLE_SECTION" name="article_section" />
            <field column="ARTICLE_SOURCE" name="article_source" />
            <entity name="articletype_name" dataSource="DB-SOURCE" 
                            query="SELECT 
                            articletype_name 
                            FROM articletypes 
                            WHERE articletype_id='${article_ph.article_articletype_id}'">
    <field column="articletype_name" name="article_type"/>
            </entity>
</entity>

MySQL 5.5をポイントしてインポートを実行すると、次のようになります。

<arr name="article_id"><str>ph-article-124</str></arr>

MySQL 5.0をポイントしてインポートを実行すると、base64エンコードIDの記事が表示されます。

<arr name="article_id"><str>cGgtYXJ0aWNsZS0xMjQ=</str></arr>

他のすべてのフィールドは正しく返されます。

両方のDBの照合と文字セットは同じです。

助けていただければ幸いです。

4

1 に答える 1

4

文字列に変換してみてください

CONCAT('ph-article-', CAST(article_id AS CHAR(50))
于 2012-10-17T16:48:01.510 に答える