フォーラムの内容、特にフォーラムの質問を検索したい
例えば:
searchString = "Hibernate Session Configuration";
フォーラムの質問で対応する詳細を提供します
ただし、フォーラムのコンテンツではすべての単語が連続している必要はないため、java.util.Set
各単語を含む検索文字列を格納しています。
String[] searchArray= searchString.toLowerCase().split(" ");
Set<String> searchSet = new HashSet<String>();
// searchSet contains words of searchString
for(String string : searchArray){
searchSet.add(string);
}
Hibernateクエリを次のように記述しました。
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(ForumQuestion.class);
for(String searchUnitString : searchSet)
{
detachedCriteria= detachedCriteria.add(Restrictions.disjunction().add(Restrictions.ilike("forumQuestion", "%"+searchUnitString+"%")));
}
return template.findByCriteria(detachedCriteria);
しかし、このクエリは正しく機能していません。Restrictions
前のクエリを無視して最後のクエリを実行するだけRestrictions
です。
この例では、「%Configuration%」のみが考慮されますが、必要なのは「%Hibernate%」または「%Session%」または「%Configuratoin%」です。
注:各単語をクエリすると、データベースのヒット数が高くなります