`
yanlong137
  • 浏览: 21034 次
  • 性别: Icon_minigender_1
  • 来自: 邢台
社区版块
存档分类
最新评论

hibernate search 的基本定义

阅读更多
hibernate search
hibernate search brings the power of full text search engines to the persistence domain model by combining Hibernate Core with the capabilities of the Apache Lucene? search engine.

Full text search engines like Apache Lucene? are very powerful technologies to add efficient free text search capabilities to applications. However, Lucene suffers several mismatches when dealing with object domain models. Amongst other things indexes have to be kept up to date and mismatches between index structure and domain model as well as query mismatches have to be avoided.

hibernate search addresses these shortcomings. It indexes your domain model with the help of a few annotations, takes care of database/index synchronization and brings back regular managed objects from free text queries. Hence, it solves:

?The structural mismatch: hibernate search takes care of the object/index translation
?The duplication mismatch: hibernate search manages the index, keeps changes synchronized with your database, and optimizes the index access transparently
?The API mismatch: hibernate search lets you query the index and retrieve managed objects as any regular Hibernate query would do
Even though hibernate search is using Apache Lucene? under the hood you can always fallback to the native Lucene APIs if the need arises.

Depending on application needs, hibernate search works well in non-clustered and clustered mode, provides synchronous and asynchronous index updates, allowing you to make an active choice between response, throughput and index update time.

Last but not least, hibernate search works perfectly with all traditional Hibernate patterns, especially the conversation pattern used by Seam.




hibernate search
Hibernate的搜寻,将持久性的领域模型相结合,与Hibernate的核心能力的权力,全文搜索引擎 Lucene的阿帕奇? 搜索引擎。

如Apache Lucene的全文搜索引擎?是非常强大的技术,以高效的自由文本中添加搜索功能的应用程序。 然而,Lucene的受到一些不匹配时域模型与对象打交道。 其他事情当中指标必须不断更新与索引结构和域模型以及查询不匹配不匹配,必须避免。

hibernate search的解决了这些缺点。 它索引你与几个注解帮助域模型,采用了数据库/指数同步护理和定期管理带回从自由文本查询对象。 因此,它解决了:

结构不匹配:Hibernate的检索需要照顾的对象/索引翻译
不匹配的重复:hibernate search的管理指标,保持与您的数据库同步变化,优化透明的索引访问
该API不匹配:Hibernate的搜索,您可以查询索引和检索管理作为任何常规的Hibernate查询对象将尽
即使是使用hibernate search的引擎盖下,你可以随时退回到Lucene的API的本机如有需要Apache的Lucene的?。

根据应用的需要,hibernate search的行之有效的非集群和集群模式,提供同步和异步索引更新,让您作出的反应之间,吞吐量和索引更新时间主动选择。

最后但并非最不重要,hibernate search的作品完全符合所有传统的休眠模式,尤其是通过对话方式使用 煤层 。


Hibernate Search项目的Beta第二版发布的时候。InfoQ为此采访了Hibernate Search项目的发起人Emmanuel Bernard以了解更多细节,Emmanuel同时也是相关项目Hibernate Annotations和Hibernate EntityManager的发起人。根据Emmanuel所言,Hibernate Search目的是帮助Hibernate的使用者或是Java Persistence API(JPA)的使用者可以通过全文搜索索引来访问Hibernate或JPA管理的对象。

Hibernate Search项目的主要特性包含以下几个方面:
◆Lucene集成——作为强大高效的检索引擎,Lucene的美名早已久经考验了;
◆数据的自动插入和更新——当一个对象通过Hibernate添加或更新时,索引也会相应进行透明的更新;
◆支持众多复杂的搜索方式——可快速的使用通配符进行搜索,以及多关键词全文检索(multi-word text searches)和近似或同义词搜索(approximation/synonym searches),或根据相关性排列搜索结果;
◆搜索集群(Search Clustering)——Hibernate Search提供了内建搜索集群解决方案,其中包括一个基于JMS的异步查询和索引系统;
◆对Lucene API接口的直接调用——如果用户打算处理某些特别复杂的问题,可以在查询中直接使用Lucene提供的API接口;
◆对Lucene的自动管理——Hibernate Search可以管理并优化Lucene的索引,并且非常高效地使用Lucene的API接口。

项目的主要目标包含以下几个方面:
◆易用性——和Hibernate的ORM映射一样,Hibernate Search帮助用户实现了业务90%的工作,并且使用户专注于余下更为困难的业务实现部分;
◆和已有的Hibernate/JPA编程模型保持一致性——更轻松地集成Hibernate/JPA编程模型是“一开始就致力要实现的目标”。

Emmanuel在实践中给出了几个具体的实例,包括:
◆通过转换对象构造的方式,HQL查询语句可以被转换为搜索查询,“通常只是几行代码”——其他的因素(执行查询,结果格式等)都保持不变;
◆不需要启动过程,因为Hibernate Search透明地利用了已有的Hibernate/JPA基础架构;
◆最小配置集合要求至少在persistence.xml或者hibernate.cfg.xml中设置两个属性。

关于最终发布时间表,Emmanuel指出3.0版本发布之前将在查询和索引最优化方面做出大量的工作,他就此总结道:

Hibernate Search的核心代码实际上是相当稳定的,发布版之所以仍标记为Beta的原因是我们对拓展API接口还没有充足的把握,Hibernate Search内核相当灵活,并且可以融入用户自定制的搜索策略。到目前为止,代码已经相对稳定,我们希望看到一个具备完善特性的产品,并保证API接口不会出现问题。

如同平常一样,开源项目在编码完成时发布,我所要说的就是这个夏天很长并且我没有安排什么额外的度假计划 :)

关于Hibernate Search实现策略好处和不足的有趣争论也随之展开,Sanjiv Jivan就此描述了他眼中的Hibernate Search优缺点,随后Emmanuel Bernard也回应了Sanjiv的看法。那么,亲爱的读者,对于Hibernate Search,您的观点又是如何呢?

hibernate search 详解
分享到:
评论

相关推荐

    hibernate Search in action

    本书首先会介绍Hibernate Search的基本概念和架构,包括索引的创建、管理和更新。读者将学习如何配置Hibernate Search,以及如何将它与现有的Hibernate实体映射。接下来,书中会讲解如何定义和使用分析器,这是处理...

    Hibernate Search配置及简单应用

    这就是一个基本的Hibernate Search配置和应用流程。通过这种方式,我们可以利用Hibernate Search提供的强大全文检索功能,提升应用程序的搜索体验。然而,实际应用中可能还需要考虑更多因素,比如性能优化、多语言...

    hibernateSearch+demo

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

    hibernate search

    通过上述步骤,我们可以成功搭建 Hibernate Search 的开发环境,并实现基本的全文检索功能。需要注意的是,实际项目中可能还需要考虑更多的细节,如性能优化、分布式部署等问题。希望本篇文章能帮助您顺利上手 ...

    Hibernate Search in action (pdf && code)

    本书首先会介绍Hibernate Search的基本概念,包括什么是全文搜索引擎、如何与Hibernate ORM集成以及其工作原理。接着,会详细讲解如何配置和初始化Hibernate Search,包括设置索引存储、分析器选择和分词策略等关键...

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

    3. **Hibernate Search**:作为Hibernate的一个扩展,Hibernate Search提供了基于Lucene的全文检索功能,使得在数据库中的数据可以被快速、精确地搜索。 **二、集成Hibernate Search** 1. **配置依赖**:首先,你...

    hibernate_search.pdf

    - **配置**:涵盖Hibernate Search的基本配置,包括如何在应用程序中启用搜索功能。 - **索引化**:介绍如何创建、更新或删除索引,是全文搜索的基础。 - **搜索**:讲解如何利用Hibernate Search执行查询,获取结果...

    Getting Started with Hibernate search

    为了使用Hibernate Search,首先你需要对Hibernate的基本操作有所了解,包括对象操纵API(来自Hibernate Session或Java Persistence EntityManager)以及查询API。此外,熟悉关联映射和双向关系的概念也是必要的。你...

    hibernate search源码

    **hibernate search源码详解** Hibernate Search是Hibernate ORM框架的一个强大扩展,它将全文搜索引擎的功能集成到了Java持久层,使得开发者可以方便地在数据库中进行复杂的文本搜索。本篇文章将深入探讨Hibernate...

    hibernate-search-5.6.0.Alpha3-dist.zip

    7. **JPA集成**:作为Hibernate ORM的一部分,Hibernate Search与Java Persistence API(JPA)无缝集成,开发者可以直接在实体类上定义搜索注解,简化了代码编写和维护。 8. **性能优化**:此版本针对索引构建和...

    Hibernate Search in Action

    《Hibernate Search in Action》这本书是关于Java开发中利用Hibernate Search框架进行全文检索的权威指南。Hibernate Search是一个在Hibernate ORM之上构建的搜索引擎,它允许开发者在Java应用中实现强大的、数据库...

    hibernate-search-4.3.0.zip

    《Hibernate Search 4.3.0:全面解析与实践指南》 Hibernate Search是Java领域中一个强大的全文搜索引擎,它将Apache Lucene的功能与Hibernate ORM框架相结合,为Java应用程序提供了便捷的、高性能的全文检索功能。...

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

    Hibernate Search通过在数据库中的实体类上添加注解,来定义哪些字段应该被索引。例如,你可以使用`@Field`注解标记一个字符串属性,这将指示Hibernate Search对这个属性进行全文索引。`@AnalyzerDef`注解可以用于...

    Getting Started with Hibernate Search

    为了使用Hibernate Search,你需要对Hibernate的基本操作有所了解,熟悉Hibernate Session或Java Persistence EntityManager的API,以及查询API。同时,对于关联映射和双向关系的概念也应有基本的认知。 下载...

    使用 hibernate-search 实现全文检索及文档管理的例子

    **使用Hibernate Search实现全文检索及文档管理** 在Java开发中,全文检索和文档管理是常见的需求,特别是对于大型的企业级应用。Hibernate Search是Hibernate ORM框架的一个扩展,它提供了对数据库中的对象进行...

    hibernate-search-5.5.1.Final-dist.zip

    1. **无缝集成ORM**:Hibernate Search与Hibernate ORM紧密结合,允许在实体类上直接定义索引,使得数据库操作与搜索操作可以协同工作。 2. **全文搜索**:支持对文本字段进行全文索引,用户可以通过关键词进行模糊...

    hibernate-search-5.1.1.Final-dist.zip

    1. **无缝集成**:Hibernate Search与Hibernate ORM紧密集成,允许开发者在ORM模型上直接定义索引,无需额外编写代码来同步数据。 2. **全文搜索**:利用Lucene的强大功能,提供精确匹配、模糊匹配、短语搜索等多种...

    hibernate-search-4.2.0.jar及说明pdf

    一、Hibernate Search的基本概念 1. **对象索引**:Hibernate Search可以自动将ORM映射的实体类内容索引到搜索引擎,实现数据库对象与搜索引擎之间的无缝对接。 2. **全文搜索**:利用Lucene的强大功能,开发者...

Global site tag (gtag.js) - Google Analytics