![](/img/trans.png)
[英]Can not import/index data from mysql database to solr using dataimporthandler
[英]Indexing UTF8 Data from MySQL into SOLR 4 using DataImportHandler
我有一个设置,我有一个MySQL数据库使用亚马逊的RDS(版本5.5.x)。 我已确认DB配置为UTF8。 我可以使用PHP插入和选择中文字符。 看起来很好。
我在Tomcat6上运行SOLR(来自Ubuntu 10.04LTS的Tomcat6库存)
现在的问题是使用MySQL自己的JDBC驱动程序将SOLR 4.0插入其中。
我将在下面提供相关的配置,但我试图解决的问题是,一旦我将我的数据库表索引到SOLR中,ASCII字符很好(当然),但unicode字符,如中文,显示为jiberish。 我也无法查询这些字符(但查询英文单词效果很好!)。
有没有人遇到过这个问题?
这是我用于DataImportHandler的db conf xml文件:
<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>
我已经玩过上面的url变量中的参数,将utf8更改为UTF-8等等。没有什么可说的。 (我已经更改了查询以删除我的表结构,但我确认它有效 - delta导入工作正常)
对于schema.xml,我从collection1 / conf / schema.xml开始,删除了所有不必要的字段,并添加了我自己的字段。 所有文本字段(即mysql中的varchars)都设置为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文件中添加了一些中文,导入它,并查询了collection1,我得到了中文字符。
所以我怀疑它在DataImportHandler中的某个地方。
有没有人遇到过这个并提出解决方案?
非常感谢! 克里斯
毫无疑问,Solr支持汉字。
我想你需要添加这样的配置
<dataSource type="FileDataSource" encoding="UTF-8"/>
有关详细信息,请参阅Solr wiki中有关数据导入请求处理程序的 “故障排除”部分。
修复它 - 实际上是数据库问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.