InfoQ

新闻

Hibernate Search:全文检索你的领域模型

作者 Ryan Slobojan译者 高昂 发布于 2007年6月26日 上午4时30分

社区
Java
主题
数据访问,
搜索
标签
Hibernate

Hibernate Search项目的Beta第二版刚刚发布。InfoQ为此采访了Hibernate Search项目的发起人Emmanuel Bernard以了解更多细节,Emmanuel同时也是相关项目Hibernate AnnotationsHibernate 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: Indexed Full Text Search of your Domain Model

相关赞助商

InfoQ中文站Java社区,关注企业Java社区的变化与创新,通过新闻、文章、视频访谈和演讲以及迷你书等为中国Java技术社区提供一流资讯。

3 条回复

回复

拭目以待 发表人 seven he 发表于 2007年6月26日 下午10时8分
Hibernate还是不错的,新项目应该也会出色。 发表人 Leon Kennedy 发表于 2007年6月27日 下午8时21分
还不错 发表人 Xiaogang Guo 发表于 2007年7月7日 下午2时31分
  1. 返回顶部

    拭目以待

    2007年6月26日 下午10时8分 发表人 seven he

    好不好用,拭目以待

  2. 返回顶部

    Hibernate还是不错的,新项目应该也会出色。

    2007年6月27日 下午8时21分 发表人 Leon Kennedy

    跟期待Hibernate Search的傻瓜化和效率。 --------- 袋鼠蛋开源动态web服务器,拥有完全自主知识产权 www.kangaroo-egg.com

  3. 返回顶部

    还不错

    2007年7月7日 下午2时31分 发表人 Xiaogang Guo

    还真的很好用,Hibernate Search通过我的“10分钟测试”了。 不过给我正在开发的一个项目加上Hibernate Search实现的搜索功能用了20分钟; 解决Hibernate Search跟其他库的不兼容花了2个小时(--)#

独家内容

虚拟化导论

人们很容易想当然的以为虚拟化技术仅仅应用于服务器。而在现实中,虚拟化这一苏醒的概念正被运用于各个层面,其中包括网络,存储以及应用基础架构。在这篇导论中,InfoQ将深入每个方面,详尽向您描述虚拟化技术的运用以及其优点与不足。

用户故事估算技巧

作为开发者,同时也是ThoughtWorks的咨询师,Jay Fields总结了自己估算用户故事的有效技巧。

InfoQ案例研究:纳斯达克市场回放

在这篇案例研究中,InfoQ对Adobe AIR和Amazon的简单存储服务(Simple Storage Service ,S3)在NASDAQ市场回放程序(NASDAQ Market Replay)中的应用进行了详细的分析。

Hadoop基本流程与应用开发

本文介绍了Hadoop的基本流程、业务场景、代码范例以及集成测试。本文是《分布式计算开源框架Hadoop入门实践》三部曲的最后一部。

SOA在互联网系统中的应用

本视频对SOA在互联网系统中的应用进行了探讨,主要以支付宝在SOA的实践为例,主题从敏捷的应用程序(对象与组件)到敏捷的企业系统(应用集成与面向服务),再到敏捷的生态圈(网关与开放平台)。

用数字沟通——来自敏捷精灵的忠告

因为不知道如何反击,技术人员不得不听从业务人员的要求。这已经是老生常谈了。问题何在?开发人员用数字主要是进行计算的,而业务人员使用数字辅助决策。在下面的故事中,“敏捷精灵”鼓励一个开发人员用数字来描述与计算无关的问题。

Hadoop中的集群配置和使用技巧

本文介绍了Hadoop如何配置分布式框架运行环境,同时特别讲解了其中的一些细节。Hadoop可以单机跑,也可以配置集群跑,这里主要重点说一下集群配置运行的过程。本文是Hadoop入门实践三部曲的第二部。

JavaScript多线程编程简介

虽然有越来越多的网站在采用AJAX技术,但是开发复杂的AJAX应用仍然是个难题。本文探索了如何应用多线程缓解其中一些问题。