hibernate search lucene搜索的用法

jywbd 2010-06-03 10:25:57
保存数据到数据库中,同时建立索引
public void createIndex(ColumnBean column) {
try {
this.getHibernateTemplate().save(column);
Session session = this.getSession();
FullTextSession fullTextSession = Search
.createFullTextSession(session);
fullTextSession.save(column);
} catch (Exception e) {
throw new RuntimeException("create index error!!!");
}
// fullTextSession.index(dep);
}

//////////////////////////////////////////////////////////////////////////
进行搜索
public void searchDate() throws Exception {
Session session = this.getSession();
if (session != null) {
FullTextSession fullTextSession = Search
.createFullTextSession(session);
QueryParser parser = new QueryParser("columnValue",
new StandardAnalyzer());
org.apache.lucene.search.Query luceneQuery = parser
.parse("columnValue:work");
Query hibQuery = fullTextSession.createFullTextQuery(luceneQuery,
ColumnBean.class);

List list = hibQuery.list();
System.out.println("test create:" + list.size());
}
}
/////////////////////////////////////////////////////////////////////////////////

进行搜索后,从控制台打印出这些语句

Hibernate: select this_.column_id as column1_0_0_, this_.column_value as column2_0_0_, this_.field_id as field3_0_0_, this_.record_id as record4_0_0_ from dafil this_ where (this_.column_id in (?))

这个搜索函数居然最后返回hql语句,就等于绕了一个大弯,还不如直接写hql吧,我就不明白,hibernate search 集合lucene进行搜索 用法会比直接写hql还快吗?为什么要用它,请求解答,谢谢
...全文
145 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
白开水998 2010-08-10
  • 打赏
  • 举报
回复
我也有这样的疑惑,我保存对象后,然后搜索是可以查询到的,但是当我把数据库中记录删除掉,则发现就查询不到了。不知道为什么。
jywbd 2010-06-03
  • 打赏
  • 举报
回复
大家用hibernate search 吗?在搜索的时候,我从控制台观察,分明就是一个sql查询语句呀,
其搜索代码
public void searchDate() throws Exception {
Session session = this.getSession();
if (session != null) {
FullTextSession fullTextSession = Search
.createFullTextSession(session);
QueryParser parser = new QueryParser("columnValue",
new StandardAnalyzer());
org.apache.lucene.search.Query luceneQuery = parser
.parse("columnValue:work");
Query hibQuery = fullTextSession.createFullTextQuery(luceneQuery,
ColumnBean.class);

List list = hibQuery.list();
System.out.println("test create:" + list.size());
}
}

我在想,还不如直接写hql语句哦,反正上面的语句最后还是转换成sql
我想问下,上面的写法,岂不是影响性能?那为什么要用hibernate search哦?请求解答
jywbd 2010-06-03
  • 打赏
  • 举报
回复
哥哥,姐姐,说个话哦

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧