1

Zend_Search_Lucene と、ドイツ語の ÄÖÜ などの英語以外の文字の問題がいくつかあります。私のデータベースは UTF-8 形式の文字列を返すので、すべてうまくいくと思いました。

深刻なエンコーディングの問題が発生した後、Web を検索したところ、次のコード行でほとんどの人の問題が解決されることがわかりました。

Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive ()

実際、これは私の問題を解決しませんでした。今日、私はうまくいく解決策を見つけました:(ではないutf8_decode

$doc->addField(Zend_Search_Lucene_Field::keyword('division', utf8_decode($contact->division)), 'utf-8');

まあ、これは完全にうまく機能していますが、率直に言って、かなり奇妙に見えます。文字列を前後に変換する必要があるのはなぜですか? たぶん私はLuceneを間違って使用していますか?それともこれはバグですか?

4

1 に答える 1

0

データのクエリと格納は 2 つの異なるものです。クエリが utf-8 でエンコードされている場合、データ (ドキュメント) もクエリと一致するように utf-8 でエンコードする必要があります。

最後に

$doc->addField(Zend_Search_Lucene_Field::keyword('division', utf8_decode($contact->division)), 'utf-8');

する

$doc->addField(Zend_Search_Lucene_Field::keyword('division',$contact->division, 'utf-8'));
于 2011-10-09T10:56:39.050 に答える