Using projection instead of returning the full domain object
org.hibernate.search.FullTextQuery query = s.createFullTextQuery( luceneQuery,
Book.class );
query.setProjection( "id", "summary", "body", "mainAuthor.name" );
List results = query.list();
Object[] firstResult = (Object[]) results.get(0);
Integer id = firstResult[0];
String summary = firstResult[1];
String body = firstResult[2];
String authorName = firstResult[3];
Using ResultTransformer in conjunction(联合) with projections
org.hibernate.search.FullTextQuery query = s.createFullTextQuery( luceneQuery,
Book.class );
query.setProjection( "title", "mainAuthor.name" );
query.setResultTransformer(
new StaticAliasToBeanResultTransformer( BookView.class, "title", "author" )
);
List<BookView> results = (List<BookView>) query.list();
for(BookView view : results) {
log.info( "Book: " + view.getTitle() + ", " + view.getAuthor() );
}
Adding instances to the Index
Using FullTextSession.index(T entity) you can directly add or update a specific object
instance to the index. If this entity was already indexed, then the index will be updated. Changes
to the index are only applied at transaction commit
Indexing an entity via FullTextSession.index(T entity)
FullTextSession fullTextSession = Search.getFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();
Object customer = fullTextSession.load( Customer.class, 8 );
fullTextSession.index(customer);
tx.commit(); //index only updated at commit time
Deleting instances from the Index: Purging 以下清除不会影响数据库,只会对索引起效,不过他们也是具有事务性的
It is equally possible to remove an entity or all entities of a given type from a Lucene index without
the need to physically remove them from the database. This operation is named purging and is
also done through the FullTextSession.
Purging a specific instance of an entity from the index
FullTextSession fullTextSession = Search.getFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();
for (Customer customer : customers) {
fullTextSession.purge( Customer.class, customer.getId() );
}
tx.commit(); //index is updated at commit time
Purging all instances of an entity from the index
FullTextSession fullTextSession = Search.getFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();
fullTextSession.purgeAll( Customer.class );
//optionally optimize the index
//fullTextSession.getSearchFactory().optimize( Customer.class );
tx.commit(); //index changes are applied at commit time
分享到:
相关推荐
Hibernate Search库将全文搜索与Hibernate持久化框架紧密结合,为Java开发者提供了方便的方式来集成全文搜索功能,而无需深入学习底层搜索引擎的复杂性。 Hibernate Search的一个显著优势是它能够自动化管理索引与...
读者将学习如何配置Hibernate Search,以及如何将它与现有的Hibernate实体映射。接下来,书中会讲解如何定义和使用分析器,这是处理文本数据并准备进行全文搜索的关键步骤。分析器的选择和定制对于搜索性能和结果的...
<property name="hibernate.search.lucene_version">LUCENE_8_8_2 ``` 在实体类上,我们需要使用`@Indexed`注解标记该类为可搜索的。例如,如果我们有一个`Article`实体: ```java @Entity @Indexed public class ...
《Hibernate Search in Action》是一本深入探讨Hibernate Search技术的专业书籍,配合源代码一同学习,能够帮助读者更好地理解和应用这项强大的全文检索和分析框架。Hibernate Search是Hibernate ORM的一个扩展,它...
2. **实时索引**:当数据库中的数据发生变化时,Hibernate Search能够实时更新对应的索引,确保搜索结果始终与数据库状态同步。 3. **多字段搜索**:支持对多个字段进行复合条件的搜索,可以通过布尔逻辑(AND、OR...
Hibernate Search 是一个强大的全文搜索引擎框架,它将Apache Lucene库集成到Hibernate ORM中,使得在Java应用程序中实现复杂的全文检索和分析功能变得简单。这个"hibernate-search-5.5.4 api docset for Dash"是...
标题与描述:“Getting Started with Hibernate Search” 在深入探讨前,我们先来理解“Hibernate Search”这一概念。...无论是初学者还是有经验的开发者,都可以从学习和应用Hibernate Search中获益匪浅。
### 使用Hibernate Search入门详解 #### 引言 Hibernate Search作为Hibernate Core的...无论是初学者还是有经验的开发者,都可以通过学习和实践,充分发挥Hibernate Search的优势,提升数据检索的效率和用户体验。
本篇文章将深入探讨Hibernate Search的源码,帮助你理解其工作原理,并提供研究和学习的指导。 **1. 概述** Hibernate Search的核心功能是通过Apache Lucene库实现的全文检索。它允许开发者对持久化的实体对象进行...
综上所述,基于Spring的Hibernate Search全文检索功能示例涵盖了从集成、配置、索引构建到查询和优化等多个环节,是学习和实践中不可多得的参考资料。通过深入理解和实践,开发者可以为自己的Java应用带来高效、精准...
2. **安装与配置**:学习如何在项目中添加Hibernate Search依赖,配置相关的XML或Java配置文件,设置索引目录,以及与数据库和Lucene版本的兼容性问题。 3. **基本概念**:理解`@Indexed`、`@Field`、`@AnalyzerDef...
9. **文档**:这个版本包含了详尽的官方文档,指导开发者如何配置、使用以及优化Hibernate Search,方便学习和调试。 在实际应用中,Hibernate Search 4.5.0.Final可以用于电商网站的商品搜索、新闻平台的内容检索...
文章涵盖了Hibernate的核心接口与类、标识符生成策略、对象生命周期管理、OSIV(Open Session In View)模式、泛型DAO模式、集合映射、组件映射、...缓存机制、性能优化、Hibernate Annotations、Hibernate Search...
Apache Shiro + SpringMVC + Hibernate Search + Hibernate + Bootstrap企业信息管理系统基础框架搭建整合实例代码教程,这是一个典型的Java Web开发中的技术栈组合,用于构建高效、安全的企业级信息系统。...
《Hibernate Search 3.4.0.Final:深入理解与应用》 Hibernate Search是Hibernate框架的一个强大扩展,它为Java应用程序提供了全文检索功能。在3.4.0.Final版本中,这一特性得到了进一步的优化和完善,使得开发者...
2. Hibernate Search ORM:学习如何集成和配置Hibernate Search,创建索引,执行全文搜索,以及高级查询功能。 3. Spring MVC:理解Spring MVC的组件如DispatcherServlet、Controller、ModelAndView等,以及如何编写...
通过本参考指南的学习,开发者能够了解到如何在 JBoss Enterprise Application Platform 4.3 中集成和使用 Hibernate Search,从而为基于 Hibernate 的应用程序添加强大的全文搜索功能。从环境搭建、配置管理到具体...
### Hibernate Search 参考指南知识点概述 #### 一、引言 `hibernate_search_reference.pdf` 是关于 Hibernate Search 的一份详尽参考文档,版本号为 3.2.1.Final。该文档覆盖了 Hibernate Search 的核心概念、配置...
2. **索引自动更新**:当数据库中的数据发生变化时,Hibernate Search会自动更新对应的索引,保持索引与数据库的一致性。 3. **多字段检索**:支持对多个字段进行复合查询,实现复杂的全文搜索。 4. **模糊查询**...
hibernate search 和lucene结合使用实例