我有一個使用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。 –