3

AmazonのRDS(バージョン5.5.x)を使用するMySQLDBを使用するセットアップがあります。DBがUTF8用に構成されていることを確認しました。PHPを使用して漢字を挿入して選択できます。見栄えがします。

私はTomcat6(Ubuntu 10.04LTSからのストックTomcat6)でSOLRを実行しています

問題は、MySQL独自のJDBCドライバーを使用してSOLR4.0をプラグインすることです。

以下に関連する構成を提供しますが、解決しようとしている問題は、DBテーブルをSOLRにインデックス付けすると、ASCII文字は(もちろん)問題ありませんが、中国語などのUnicode文字は次のように表示されます。 jiberish。私もそれらの文字を照会することはできません(しかし、英語の単語を照会することはうまくいきます!)。

誰かがこの問題に遭遇しましたか?

DataImportHandlerに使用されるdbconfxmlファイルは次のとおりです。

<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の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」にインポートしました。これは、実際にサンプル文字をIDEXします。xmlファイルに中国語を追加してインポートし、collection1に対してクエリを実行すると、漢字が取得されます。

したがって、DataImportHandlerのどこかにあると思います。

誰かが以前にこれに遭遇し、解決策を考え出したことがありますか?

どうもありがとう!クリス

4

2 に答える 2

0

Solr が漢字をサポートしていることは間違いありません。

そのような設定を追加する必要があると思います

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

詳細については、データ インポート リクエスト ハンドラに関する Solr wikiの「トラブルシューティング」セクションを参照してください。

于 2012-11-22T00:45:02.447 に答える
-3

それを修正しました-実際にはDBの問題でした。

于 2012-11-30T05:40:20.543 に答える