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文件中加入了一下内容:
< property name = "hibernate.search.default.directory_provider" >
org.hibernate.search.store.FSDirectoryProvider
</ property >
< property name = "hibernate.search.default.indexBase" >
E:/temp/index
</ property >
其中属性hibernate.search.default.indexBase代表索引文件默认的保存位置。
这些属性设置完成后,接下来就是使用Annotation对指定POJO的指定属性进行配置了。如下:
@Indexed (index = "text" )
public class Text implements java.io.Serializable
{
@DocumentId
private Integer id;
private String fileName;
private String filePath;
@Field (name = "content" , store = Store.NO, index = Index.TOKENIZED, analyzer = @Analyzer (impl = ChineseAnalyzer. class ))
private String content;
......
}
其中@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时应该这样写:
factory = new AnnotationConfiguration().configure(file).buildSessionFactory();
使用AnnotationConfiguaration来代理平常使用的Configuration
2、Session
要使用Hibernate Search的功能就不能单纯使用平常的Session来开始事务,进行数据库操作,而是应该改用FullTextSession
//获取Session
Session session = HibernateUtil.getSession();
//封装Session为FullTextSession
FullTextSession fullTextSession = Search.createFullTextSession(session);
//开始事务
Transaction tx = fullTextSession.beginTransaction();
......
//提交事务
tx.commit();
//关闭会话
fullTextSession.close();
这样,我们使用FullTextSession进行save,update,delete操作hibernate search将会自动根据配置在后台对相应的域建立全文索引了
三、检索
接下来就是说一下如何使用全文检索功能来检索实体对象了。
java 代码
Session session = HibernateUtil.getSession();
FullTextSession fullTextSession = Search.createFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();
QueryParser parser = new QueryParser( "content" , new ChineseAnalyzer());
Query query = fullTextSession.createFullTextQuery(parser.parse(word),
Text. class );
List result = query.list();
for ( int i = 0 ; result != null && i < result.size(); i++)
{
Text pojo = (Text) result.get(i);
System.out.println( "文件名:" + pojo.getFileName());
System.out.println( "文件路径:" + pojo.getFilePath());
System.out.println();
}
tx.commit();
fullTextSession.close();
首先是建立相应的QueryParser由他来对输入的关键字进行切分后产生Lucene下的Query实例,最后通过 FullTextSession的createFullTextQuery方法生成hibernate下的Query实例,执行list方法即可获得查询 的实例结果集合。
分享到:
相关推荐
这就是一个基本的Hibernate Search配置和应用流程。通过这种方式,我们可以利用Hibernate Search提供的强大全文检索功能,提升应用程序的搜索体验。然而,实际应用中可能还需要考虑更多因素,比如性能优化、多语言...
本书首先会介绍Hibernate Search的基本概念和架构,包括索引的创建、管理和更新。读者将学习如何配置Hibernate Search,以及如何将它与现有的Hibernate实体映射。接下来,书中会讲解如何定义和使用分析器,这是处理...
- 配置 Hibernate 时,需要指定使用 Hibernate Search 的搜索存储和索引策略。 - 可以通过 `hibernate.cfg.xml` 或 `persistence.xml` 文件来进行配置。 4. **编写实体类**: - 定义实体类,并使用 Hibernate 的...
除了基本的关键词查询,Hibernate Search还支持更复杂的查询表达式,如布尔逻辑、短语匹配、范围查询等。同时,你可以通过`setSort`方法来指定排序规则,以满足不同场景的需求。 在项目结构方面,`.classpath`和`....
- **配置**:涵盖Hibernate Search的基本配置,包括如何在应用程序中启用搜索功能。 - **索引化**:介绍如何创建、更新或删除索引,是全文搜索的基础。 - **搜索**:讲解如何利用Hibernate Search执行查询,获取结果...
接着,会详细讲解如何配置和初始化Hibernate Search,包括设置索引存储、分析器选择和分词策略等关键步骤。 在数据模型部分,书中会阐述如何使用注解或XML来定义可被搜索的字段,以及如何处理多对一、一对多等复杂...
源码中的`jbossmodules`模块展示了如何在这些环境中配置和启动Hibernate Search。 **9. 学习路径** 深入学习Hibernate Search源码,可以从以下几个方面入手: - 理解Lucene的基本概念和操作。 - 掌握Hibernate ORM...
除了基本的安装、配置和使用之外,Hibernate Search还提供了一系列高级特性和技巧,例如,使用自定义分析器优化文本处理,利用缓存提高查询性能,或者利用分布式索引来支持高可用性和大规模数据集。掌握这些高级特性...
《Hibernate Search 4.2.0:全文搜索与对象关系映射的完美结合》 Hibernate Search是...通过阅读`hibernate_search_reference4.2.0.pdf`,开发者可以深入了解其工作原理和使用方法,从而充分利用这一工具的优势。
3. **配置Hibernate Search**: 在Hibernate的配置文件(如hibernate.cfg.xml)中,添加以下配置来启用Search模块: ```xml <property name="hibernate.search.default.indexmanager">lucene ``` 4. **设置索引...
2. **安装与配置**:学习如何在项目中添加Hibernate Search依赖,配置相关的XML或Java配置文件,设置索引目录,以及与数据库和Lucene版本的兼容性问题。 3. **基本概念**:理解`@Indexed`、`@Field`、`@AnalyzerDef...
配置Hibernate Search是使用它的第一步。基础配置包括添加必要的jar包,例如Hibernate和Lucene的相关库,以及在`hibernate.cfg.xml`或自定义配置文件中设置属性。这些属性包括: - `hibernate.search.default....
在部署环境中,`hibernate-search-5.3.0.Final-dist`压缩包包含了所有必要的库文件和配置文件,开发者可以根据自身项目需求进行选择和配置。例如,包含的JAR文件提供了Hibernate Search的核心功能,而相关的XML配置...
**hibernateSearch 搜索 索引列子源代码** Hibernate Search 是 Hibernate 的一个扩展模块,它将全文搜索引擎的功能集成到了 Java 应用中,允许开发者在数据库中进行复杂的文本搜索。本教程将深入探讨 Hibernate ...
Hibernate Search ORM是Hibernate框架的一个重要扩展,它允许开发者在Java应用程序中实现全文检索功能,从而提升数据查询的效率和用户体验。在4.4.2.Final版本中,这个组件进一步优化了性能和稳定性,为开发者提供了...
该参考指南主要介绍了如何在 JBoss Enterprise Application Platform 4.3 版本中集成 Hibernate Search,并提供了详细的配置和使用方法。 #### 二、系统要求与安装 ##### 2.1 系统要求 - **操作系统**: 支持多种...
综上所述,`hibernate_search_reference.pdf` 为开发者提供了一个全面深入的 Hibernate Search 使用手册,涵盖了从基础配置到高级功能的各个方面,是进行基于 Hibernate Search 的开发不可或缺的资源。
学习完基础后,可深入研究Hibernate的高级特性,如 Criteria API、Hibernate Search 和 JPA 规范等。 总之,"hibernate第一个hibernate"项目是一个绝佳的起点,它将引导你了解并掌握Hibernate的基本概念和操作。...
在部署和配置层面,3.1.1.GA版本的Hibernate Search支持多种后端存储,包括InnoDB、MyISAM等MySQL引擎,以及Lucene的本地文件系统存储和远程网络存储。此外,它还提供了详细的日志和监控机制,帮助开发者诊断和优化...