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添加或更新时索引也会相应进行透明的更新
·支持众多复杂的搜索方式——可快速的使用通配符进行搜索以及多关键词全文检索(multiword text searches)和近似或同义词搜索(approximation/synonym searches)或根据相关性排列搜索结果
·搜索集群(Search Clustering)——Hibernate Search提供了内建搜索集群解决方案其中包括一个基于JMS的异步查询和索引系统
·对Lucene API接口的直接调用——如果用户打算处理某些特别复杂的问题可以在查询中直接使用Lucene提供的API接口
·对Lucene的自动管理——Hibernate Search可以管理并优化Lucene的索引并且非常高效地使用Lucene的API接口
项目的主要目标包含以下几个方面
·易用性——和Hibernate的ORM映射一样Hibernate Search帮助用户实现了业务%的工作并且使用户专注于余下更为困难的业务实现部分
·和已有的Hibernate/JPA编程模型保持一致性——更轻松地集成Hibernate/JPA编程模型是一开始就致力要实现的目标
Emmanuel在实践中给出了几个具体的实例包括
·通过转换对象构造的方式HQL查询语句可以被转换为搜索查询通常只是几行代码——其他的因素(执行查询结果格式等)都保持不变
·不需要启动过程因为Hibernate Search透明地利用了已有的Hibernate/JPA基础架构
·最小配置集合要求至少在persistencexml或者hibernatecfgxml中设置两个属性
关于最终发布时间表Emmanuel指出版本发布之前将在查询和索引最优化方面做出大量的工作他就此总结道
Hibernate Search的核心代码实际上是相当稳定的发布版之所以仍标记为Beta的原因是我们对拓展API接口还没有充足的把握Hibernate Search内核相当灵活并且可以融入用户自定制的搜索策略到目前为止代码已经相对稳定我们希望看到一个具备完善特性的产品并保证API接口不会出现问题
如同平常一样开源项目在编码完成时发布我所要说的就是这个夏天很长并且我没有安排什么额外的度假计划 )
关于Hibernate Search实现策略好处和不足的有趣争论也随之展开Sanjiv Jivan就此描述了他眼中的Hibernate Search优缺点随后Emmanuel Bernard也回应了Sanjiv的看法那么亲爱的读者对于Hibernate Search您的观点又是如何呢?