2011-06-26 8 views
1

私は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で見つけることができません。

答えて

0

あなたと全く同じオプション(敏感でない、utf-8、AND)のサイト設定があります。プロキシ経由

$index = new Zend_Search_Lucene('/path/to/index'); 

ない(Zend_Search_Lucene::openを経由して、あなたの場合のように、それはすべての違いを作るべきではありません):しかし、私は、経由インデックスオブジェクトを作成するために使用されます。

また、私はちょうど(短い健全性チェックの後に)、直接(解析なし)インデックスにクエリを渡す:

$query = $_GET['q']; 
... 
$results = $index->find($query); 
+1

おかげで、私はあなたがパースにパラメータとしてエンコーディングを渡すことができることが判明しました関数: $ resultats = $ index->​​ find(Zend_Search_Lucene_Search_QueryParser :: parse($ _ POST ['recherche']、 'utf-8')); これも機能します。 – DoesNotCompute

関連する問題