2012-11-20 55 views
3

我有一个使用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&amp;characterEncoding=UTF-8&amp;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

+0

为了证实我的DB设置: 从INFORMATION_SCHEMA.TABLES选择c.character_set_name为t,information_schema.collat​​ion_character_set_applicability为C,其中c.collat​​ion_name = t.table_collat​​ion和t.table_schema = “DB_NAME” 和吨。table_name =“table_name”; + -------------------- + | character_set_name | + -------------------- + | utf8 | + -------------------- + 1排(0.00秒) –

+0

嗯,抱歉,格式化不起作用。结果是表格的character_set-name是utf8。 –

回答

-3

修正了它 - 实际上是一个数据库问题。

+3

添加更多的信息,而不仅仅是“实际上数据库问题”可能会帮助未来的人。 –

0

毫无疑问,Solr支持中文字符。

我觉得你需要的Solr wiki about Data Import Request Handler

<dataSource type="FileDataSource" encoding="UTF-8"/> 

参阅“故障排除”一节中添加这样的配置以获取更多信息。

相关问题