6

Zend_Search_Lucene で次のシナリオを実現する方法を見つけようとしています。

ユーザーがいて、彼女の名前が Aïcha であるとします (特殊文字に注意してください)。Aicha (i の特別な導関数なし) のインデックスを検索している場合、Aïcha が結果に返されるようにしたいと思います。

これを機能させるために、インデックス作成または検索時に何か特別なことをする必要がありますか? インデックスを作成する前にデータを正規化し、すべての特殊文字を正規化された文字に置き換えることに関する解決策を読みましたが、その方法には行きたくありません。

前もってありがとう、ゲイリー

4

1 に答える 1

3

function normalize ($string){
    $a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ
ßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ';
    $b = 'aaaaaaaceeeeiiiidnoooooouuuuy
bsaaaaaaaceeeeiiiidnoooooouuuyybyRr';
    $string = utf8_decode($string);
    $string = strtr($string, utf8_decode($a), $b);
    $string = strtolower($string);
    return utf8_encode($string);
}
$passToIndexer = normalize(" Aïcha ");

インデックスの作成中にこの関数の出力を使用してみてください。インデックスを作成せずに実際の値を保存してください =) 役に立てば幸いです。率直に言って、他に方法はないと思います。

于 2010-08-03T15:47:22.520 に答える