2012-11-20 97 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"/> 

參閱「故障排除」一節中添加這樣的配置以獲取更多信息。

相關問題