我让Solr 4.0启动并使用DataImporthandler从MySQL导入数据。
我没有指出,如果我将数据Importhandler指向MySQL 5.5数据源,则每个Herthting都按预期工作。但是,当使用完全相同的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上的整理和字符集相同。
任何帮助。
尝试将其转换回字符串
CONCAT('ph-article-', CAST(article_id AS CHAR(50))