mysql - Solr DataImportHandler MySQL 5.0 SELECT CONCAT 查询结果采用base64编码

标签 mysql solr dataimporthandler

我已经启动并运行 Solr 4.0,并使用 DataImportHandler 从 MySQL 导入数据。

我注意到,如果我将 DataImportHandler 指向 MySQL 5.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>

所有其他字段均正确返回。

两个数据库上的排序规则和字符集相同。

感谢任何帮助。

最佳答案

尝试将其转换回字符串

CONCAT('ph-article-', CAST(article_id AS CHAR(50))

关于mysql - Solr DataImportHandler MySQL 5.0 SELECT CONCAT 查询结果采用base64编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12939242/

相关文章:

mysql - 使用 MySQL 计算 3 个不同表之间的税额

solr - 分层分面

javascript - 使用 Angular JS 搜索 Solr 的 UI

MySQL 问题 : How to get desired rows

sql - 如何编写将 .csv 文件中的数据匹配到 MySQL 中的表的 SQL 查询?

mysql - 局域网PC无法连接MySQL服务器

java - lucene,如何一起使用 SearcherManager 和 SearcherLifetimeManager

mysql - 使用 DataImportHandler 将 MySQL 中的 UTF8 数据索引到 SOLR 4

database - 在 solr 中执行增量导入时的时间戳兼容性

java - Solr执行DataImportHandler时出现java.lang.ClassNotFoundException : net. minidev.json.writer.JsonReaderI