私はZend_Search_Luceneをスタンドアロンコンポーネントとして使用してフランス語のWebサイトの検索エンジンを開発しています。 Windows上のローカルWebサーバ(WAMP)ではすべてうまく動作しますが、アクセント付きの単語(例:géographie)の検索は、(UNIX上で動作している)プロダクションサーバでは動作しません。Zend_luceneでアクセントを検索する
Linuxでインデックスを生成しました。アクセント付きの単語は正しくインデックスされています。
See a screenshot of my generated index here
私はutf8_encodeとクエリ文字列を変換し、アナライザのパラメータで符号化を強制することを試みました。 しかし、私はまだそれを動作させることはできません。私はこれらのパラメータとのLuceneを呼び出す
:
Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(Zend_Search_Lucene_Search_QueryParser::B_AND);
Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive());
Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
$index = Zend_Search_Lucene::open($cheminIndexes);
$resultats = $index->find(Zend_Search_Lucene_Search_QueryParser::parse(utf8_encode($_POST['recherche'])));
このコードは、すべての非アクセントの言葉を返しますが、それらの単語がインデックス化されているが、それは私のアクセント付きのいずれかのワードを返しません。 なぜそれがWindows上で動作するのかわからないので、イライラしています。私はどこかのエンコーディングのレイヤーが欠けていると感じていますが、私はこれに関する情報をGoogleで見つけることができません。
おかげで、私はあなたがパースにパラメータとしてエンコーディングを渡すことができることが判明しました関数: $ resultats = $ index-> find(Zend_Search_Lucene_Search_QueryParser :: parse($ _ POST ['recherche']、 'utf-8')); これも機能します。 – DoesNotCompute