`

Hibernate Search应用

 
阅读更多

Hibernate Search基本配置和使用

Hibernate Search运行的环境如下:

1、JDK或JRE 5.0以上

2、Hibernate-Search以及相应的依赖包

3、Hibernate Core 3.2.X

4、Hibernate Annotations 3.3.X

一、配置

使用过Lucene的人都知道,Lucene是使用Directory这个概念来存储索引文件的,所以在Hibernate Search中提供了一个初始化、配置化的工厂类DirectoryProvider来生成相应的Directory。而在这里,我使用了 FSDirectoryProvider这个工厂类,其中FS代表文件系统,意思是索引文件保存在文件系统中。因此,我们在hibernate.cfg.xml文件中加入了一下内容:

xml 代码
  1. < property   name = "hibernate.search.default.directory_provider" >   
  2.           org.hibernate.search.store.FSDirectoryProvider   
  3. </ property >   
  4. < property   name = "hibernate.search.default.indexBase" >   
  5.           E:/temp/index   
  6. </ property >   

其中属性hibernate.search.default.indexBase代表索引文件默认的保存位置。

这些属性设置完成后,接下来就是使用Annotation对指定POJO的指定属性进行配置了。如下:

java 代码
  1. @Indexed (index =  "text" )   
  2. public   class  Text  implements  java.io.Serializable   
  3. {   
  4.      @DocumentId   
  5.      private  Integer id;   
  6.   
  7.      private  String fileName;   
  8.   
  9.      private  String filePath;   
  10.   
  11.      @Field (name =  "content" , store = Store.NO, index = Index.TOKENIZED, analyzer =  @Analyzer (impl = ChineseAnalyzer. class ))   
  12.      private  String content;   
  13.   
  14.     ......   
  15. }  

其中@Indexed用于标示需要建立全文索引的实体类,它包含一个属性index用于标示这个全文索引的名字

@DocumentId用于标示实体类中的唯一的属性保存在索引文件中,是当进行全文检索时可以这个唯一的属性来区分索引中其他实体对象,一般使用实体类中的主键属性

@Field就是用来标示Lucene的Field字段,其中name属性用于标示Field的名称,store属性用于标示这个属性的内容是否需要保存在索引中,index属性标示该字段属性是否进行分词(Index.TOKENIZED ),analyzer用于标示建立索引时所使用的分析器是什么类,这里使用Lucene自带的ChineseAnalyzer

二、建立索引

配置完成以上设置之后,Hibernate Search的配置工作算是大功告成了,剩下的就是如何在编码时使用到Hibernate Search。其实Hibernate Search的使用与我们平时Hibernate的使用基本一致,索引的建立工作是可以由Hibernate Search后台自动处理的,无需手工操作,其中的主要差别有

1、Configuration

由于本文中Hibernate Search配置是由Annotation来完成的,所以我们在初始化Configuration、SessionFactory、Session时应该这样写:

java 代码
  1. factory =  new  AnnotationConfiguration().configure(file).buildSessionFactory();  

使用AnnotationConfiguaration来代理平常使用的Configuration

2、Session

要使用Hibernate Search的功能就不能单纯使用平常的Session来开始事务,进行数据库操作,而是应该改用FullTextSession

java 代码
  1. //获取Session   
  2. Session session = HibernateUtil.getSession();   
  3. //封装Session为FullTextSession   
  4. FullTextSession fullTextSession = Search.createFullTextSession(session);   
  5.   
  6. //开始事务   
  7. Transaction tx = fullTextSession.beginTransaction();   
  8.   
  9. ......   
  10.   
  11. //提交事务   
  12. tx.commit();   
  13. //关闭会话   
  14. fullTextSession.close();  
这样,我们使用FullTextSession进行save,update,delete操作hibernate search将会自动根据配置在后台对相应的域建立全文索引了

三、检索

接下来就是说一下如何使用全文检索功能来检索实体对象了。

java 代码
  1. Session session = HibernateUtil.getSession();   
  2. FullTextSession fullTextSession = Search.createFullTextSession(session);   
  3.   
  4. Transaction tx = fullTextSession.beginTransaction();   
  5.   
  6. QueryParser parser =  new  QueryParser( "content"  new  ChineseAnalyzer());   
  7.   
  8. Query query = fullTextSession.createFullTextQuery(parser.parse(word),   
  9.         Text. class );   
  10.   
  11. List result = query.list();   
  12. for  ( int  i =  0 ; result !=  null  && i < result.size(); i++)   
  13. {   
  14.     Text pojo = (Text) result.get(i);   
  15.     System.out.println( "文件名:"  + pojo.getFileName());   
  16.     System.out.println( "文件路径:"  + pojo.getFilePath());   
  17.     System.out.println();   
  18. }   
  19.   
  20. tx.commit();   
  21. fullTextSession.close();  

首先是建立相应的QueryParser由他来对输入的关键字进行切分后产生Lucene下的Query实例,最后通过 FullTextSession的createFullTextQuery方法生成hibernate下的Query实例,执行list方法即可获得查询 的实例结果集合。

分享到:
评论

相关推荐

    Hibernate Search配置及简单应用

    **Hibernate Search配置及简单应用** Hibernate Search是Hibernate框架的一个扩展,它允许我们在应用程序中实现全文检索功能,使得数据库中的数据可以被快速、高效地搜索。这个功能尤其在处理大量文本数据时非常...

    hibernateSearch+demo

    这个“hibernateSearch+demo”项目提供了一个实战示例,帮助开发者理解并应用 Hibernate Search 的核心概念和功能。 在 Hibernate Search 中,主要涉及以下关键知识点: 1. **全文索引**:Hibernate Search 使用 ...

    Hibernate Search In Action

    Hibernate Search是一个强大的库,它为Hibernate框架提供了全文搜索的功能。全文搜索是一种强大的信息检索方式,可以让用户通过关键词快速定位到存储在大量数据中的相关内容。Hibernate Search库将全文搜索与...

    hibernate Search in action

    通过利用Lucene库的强大功能,Hibernate Search为开发者提供了在Java应用程序中执行高效、灵活的全文检索的能力。 Hibernate Search的主要目标是简化在数据库中进行复杂搜索的需求,使得开发人员可以快速地实现如...

    hibernate search全文索引的创建及查询

    Hibernate Search是Hibernate ORM框架的一个扩展,它允许开发者在Java应用中实现全文搜索功能。这个工具结合了ORM的强大和Lucene搜索引擎的高效,使得数据库中的数据可以被快速、精准地检索。本文将深入探讨如何创建...

    Hibernate搜索框架HibernateSearch.zip

    Hibernate Search主要有以下功能特点:1,功能强大,配置简单 - 配置只需要修改persistence.xml(JPA),hibernate.cfg.xml(Hibernate)2,支持Hibernate,以及EJB3 JPA标准应用3,集成全文搜索引擎Lucene - Lucene...

    基于Spring的Hibernate Search全文检索功能示例

    本示例将详细介绍如何在基于Spring的应用中集成Hibernate Search。 **一、Spring与Hibernate Search简介** 1. **Spring框架**:Spring是一个开源的Java企业级应用框架,提供依赖注入、AOP(面向切面编程)、MVC...

    Hibernate Search in action (pdf && code)

    《Hibernate Search in Action》是一本深入探讨Hibernate Search技术的专业书籍,配合源代码一同学习,能够帮助读者更好地理解和应用这项强大的全文检索和分析框架。Hibernate Search是Hibernate ORM的一个扩展,它...

    hibernate-search-5.5.4 api docset for Dash

    Hibernate Search 是一个强大的全文搜索引擎框架,它将Apache Lucene库集成到Hibernate ORM中,使得在Java应用程序中实现复杂的全文检索和分析功能变得简单。这个"hibernate-search-5.5.4 api docset for Dash"是...

    hibernate search-3.4.0.Final-dist

    总的来说,Hibernate Search 3.4.0.Final是企业级应用中实现高效、灵活全文搜索的理想选择。它的出现,让开发者无需深入理解底层搜索引擎的复杂性,就能轻松实现高级的搜索功能,极大地提高了开发效率和应用质量。...

    hibernate_search.pdf

    标题:hibernate_search.pdf 描述与标签:此文档详细介绍了...通过上述知识点,读者可以全面了解Hibernate Search的功能、架构、配置和使用技巧,从而在实际项目中有效应用全文搜索技术,提升数据检索的准确性和效率。

    hibernate-search-5.6.0.Alpha3-dist.zip

    总结来说,Hibernate Search 5.6.0.Alpha3是一个强大的企业级搜索解决方案,它结合了ORM的强大功能和搜索引擎的高效检索,为开发者提供了在Java应用程序中实现复杂、高性能搜索的途径。无论是小规模的个人项目还是大...

    Hibernate Search in Action

    Hibernate Search是一个在Hibernate ORM之上构建的搜索引擎,它允许开发者在Java应用中实现强大的、数据库集成的全文搜索功能。以下是对该主题的详细阐述: 1. Hibernate Search概述:Hibernate Search是一个开源...

    hibernate search4.2

    Hibernate Search 4.2 是一个基于 Hibernate ORM 的全文搜索引擎组件,它允许开发者在 Java 应用程序中实现高效、复杂的全文检索功能。该版本发布于几年前,但仍然是许多项目依赖的重要工具,尤其对于那些需要在大量...

    hibernate-search-4.3.0.zip

    Hibernate Search是Java领域中一个强大的全文搜索引擎,它将Apache Lucene的功能与Hibernate ORM框架相结合,为Java应用程序提供了便捷的、高性能的全文检索功能。在本文中,我们将深入探讨Hibernate Search 4.3.0...

    基于hibernate search的全文搜索引擎实现完整代码和配置文件,支持中英文

    Hibernate Search是Hibernate ORM的一个扩展,它允许开发者在Java应用中实现全文搜索功能,无缝集成到持久化层。该技术的核心是Lucene,一个高性能、全文本搜索库,提供了丰富的搜索功能和灵活性。 首先,让我们...

    hibernate search源码

    在实际应用中,`hibernate-search-3.4.0.Final`可能与Hibernate ORM、JPA以及应用服务器如Tomcat或JBoss一起部署。源码中的`jbossmodules`模块展示了如何在这些环境中配置和启动Hibernate Search。 **9. 学习路径**...

Global site tag (gtag.js) - Google Analytics