我想搜索论坛中的内容,尤其是论坛问题
例如:
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);
}
我将休眠查询编写为,
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%' 一起
注意:如果我查询每个单词,那么数据库命中率会很高