`
yanlong137
  • 浏览: 20438 次
  • 性别: 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

    可以通过以下任意组合定义查询: “本地” Apache Lucene查询以Json格式编写“本机” Elasticsearch查询(如果使用Elasticsearch,这是可选的) 使用我们的DSL提取前两个生成最佳后端特定查询的DSL 查询结果可以...

    hibernate-condition-search:用于通过定义的列和分页结果在模型中搜索的简单库

    这是一个小工具包,用于帮助按定义的条件进行搜索。 使用 SearchContainer 设置条件并按列搜索/排序。 它不是Hibernate全文搜索,而是从前端通过延迟初始化按域模型进行搜索的真正有用的实用程序。 如何使用: 1...

    org.umbrew.hibernate.database.worker.backend:Hibernate Search数据库后端工作器,用于存储Lucene Works以便以后建立索引

    Hibernate Search数据库后端处理器 这是Hibernate Search( LUCENE , JMS和JGROUPS )已经提供的后端处理器的替代后端处理器。 它将其计划的索引更新(LuceneWork的)存储在数据库中,以供计划的作业稍后处理。 它...

    UML实例之在线销售系统案例

    1.3 定义,缩写词 6 1.4 参考文献 6 1.5 内容概览 6 1.5.1 登录系统 6 1.5.2 注册系统 6 1.5.3 浏览商品系统 6 1.5.4 购物系统 6 2. 体系结构表示方法 6 3. B2C购物网上购物系统要达到的目标和限制 6 3.1 目标 6 3.2...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................

    jbpm开发步骤

    .1、安装JDK 1.2、安装Ant Ant 是使用 jBPM 必须的一个工具。 jBPM 中的很多操作都要用到 Ant 。 安装方法: ( 1 )先下载: 为了执行ant脚本,你需要...2009-07-07 15:40 1,085 jbpm.hibernate.cfg.xml ...... .....

    java面试题以及技巧

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    java面试题目与技巧1

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    java面试题及技巧4

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    java面试题及技巧3

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    java面试题以及技巧6

    │ Struts+Hibernate+Spring轻量级J2EE企业应用实战.pdf │ Struts中文手册.pdf │ Struts配置文件详解.txt │ 上海税友.txt │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ ...

    cms后台管理

    下面是我自己定义的标签mycontent_list 首先,在数据库里创建了一个jc_mycontent的表,其中有id,title,content三个字段 其次,创建了一个实体类 public class MyContent { private static final long ...

    JAVA上百实例源码以及开源项目

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性...

    java开源包1

    3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据...

    java开源包11

    3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据...

    java开源包2

    3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据...

    java开源包3

    3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据...

    java源码包---java 源码 大量 实例

    2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性...

Global site tag (gtag.js) - Google Analytics