我有一个使用Amazon RDS(版本5.5.x)的MySQL DB的设置。我已确认数据库已配置为UTF8。我可以插入并使用PHP选择中文字符。它看起来很好。使用DataImportHandler将MySQL中的UTF8数据索引到SOLR 4中
我对运行的tomcat6 SOLR
现在的问题是使用MySQL自己的JDBC驱动程序插入SOLR 4.0进去(即来自Ubuntu的10.04LTS股票的Tomcat6)。
我会提供下面的相关配置,但我试图解决的问题是,一旦我索引我的数据库表到SOLR,ASCII字符是好的(当然),但unicode字符,如中文,显示为jiberish。我无法查询这些字符(但是查询英文单词很棒!)。
有没有人遇到过这个问题?
下面是用于DataImportHandler我的分贝的conf XML文件:我已经在上面的url变量参数玩耍了
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://db.host.com/db_name?useUnicode=yes&characterEncoding=UTF-8&characterSetResults=UTF-8"
user="db_username"
password="db_password"
/>
<document name="vspcm">
<entity name="conversations"
query="select query from mysql"
>
</entity>
</document>
</dataConfig>
,改变UTF8转换为UTF-8等..没有枝。 (我已经改变了查询,删除我的表结构,但我证实,它的工作原理 - 增量导入正常工作)
对于schema.xml中,我从collection1/conf目录/ schema.xml中开始,删除了所有不必要的字段,并添加我自己的。所有文本字段(即是在MySQL VARCHAR处理)被设置为text_general例字段:
<field name="msg" type="text_general" indexed="true" stored="true" multiValued="true"/>
(上面的字段将具有Unicode字符在它
的text_general字段的定义为:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
为了确保SOLR与unicode字符配合良好,我将SOLR 4下载中提供的示例utf8-example.xml模式导入到“collection1”中,并且它确实可以识别示例字符。中文到XML文件,导入它,并查询d反对collection1,我得到汉字。
所以我怀疑它是在DataImportHandler的某个地方。
有没有人遇到过这个问题,想出一个解决方案?
非常感谢! Chris
为了证实我的DB设置: 从INFORMATION_SCHEMA.TABLES选择c.character_set_name为t,information_schema.collation_character_set_applicability为C,其中c.collation_name = t.table_collation和t.table_schema = “DB_NAME” 和吨。table_name =“table_name”; + -------------------- + | character_set_name | + -------------------- + | utf8 | + -------------------- + 1排(0.00秒) –
嗯,抱歉,格式化不起作用。结果是表格的character_set-name是utf8。 –