2011-07-23 1 views

答えて

3

標準アナライザーまたはホワイトスペースアナライザーの両方に同じ問題があります。彼らはWHO-S-09-0003のようにインデックスを作成します。つまり、検索を実行すると、検索語にハイフンが含まれている場合にのみ機能します。 問題の1つの解決方法は、コードの形式を検出してインデックス作成中にハイフンを削除する独自のTokenFilterを実装することです。 AnayzerDefを使用して、トークンフィルタのチェーンと全体的なカスタムアナライザを構築することができます。もちろん、検索するときに同じアナライザを使用する必要がありますが、Hibernate SearchのクエリDSLがこれを処理します。

0

実際にはこのような独自のメソッドを実装することができます:あなたがその文字の前に二重のバックスラッシュを挿入する必要がありますよりも、あなたはluceneのは、特殊な文字を持って知っているので、あなたは、特殊文字をエスケープしたい場合

private String specialCharacters(String keyword) { 
    String [] specialChars = {"-","!","?"}; 

    for(int i = 0; i < specialChars.length; i++) 
     if(keyword.indexOf(specialChars[i]) > -1) 
      keyword = keyword.replace(specialChars[i], "\\"+specialChars[i]); 

    return keyword; 
} 

を...

関連する問題