1

Zend_Search_Lucene をスタンドアロン コンポーネントとして使用して、フランスの Web サイトの検索エンジンに取り組んでいます。Windows 上のローカル Web サーバー (WAMP) ではすべてがうまく機能しますが、アクセント付きの単語 (geographie など) を使用した検索は、実稼働サーバー (Unix で実行されている) では機能しません。

Linux でインデックスを生成しました。アクセント付きの単語は正しくインデックス化されています。

ここで生成されたインデックスのスクリーンショットを参照してください

アナライザーのパラメーターでエンコーディングを強制し、クエリ文字列を 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でこれに関する情報を見つけることができません.

4

1 に答える 1

0

あなたとまったく同じオプション(insensitive、utf-8、AND)を使用してサイトをセットアップしています。ただし、次の方法でインデックス オブジェクトを作成していました。

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

プロキシ経由ではありません(あなたの場合のように、経由Zend_Search_Lucene::openですが、違いはありません)。

また、(短い健全性チェックの後) クエリを (解析せずに) インデックスに直接渡します。

$query = $_GET['q'];
...
$results = $index->find($query);
于 2011-06-26T19:42:46.353 に答える