gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:05:44 25 4
gpt4 key购买 nike

我有一个设置,其中有一个使用 Amazon 的 RDS(版本 5.5.x)的 MySQL 数据库。我已经确认数据库是为 UTF8 配置的。我可以使用 PHP 插入和选择汉字。看起来不错。

我在 Tomcat6(来自 Ubuntu 10.04LTS 的 stock Tomcat6)上运行 SOLR

现在的问题是使用 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&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>

我试过上面 url 变量中的参数,将 utf8 更改为 UTF-8 等。没有任何问题。 (我已经更改了查询以删除我的表结构,但我确认它有效 - 增量导入工作正常)

对于 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 about Data Import Request Handler 的“故障排除”部分获取更多信息。

关于mysql - 使用 DataImportHandler 将 MySQL 中的 UTF8 数据索引到 SOLR 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13465460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com