译:Hibernate Search - Getting started(Chapter 2)

原创
2012/06/01 16:15
阅读数 432

Getting started with Hibernate Search

本章内容包括:
 什么是 Hibernate Search?
 如何建立和配置 Hibernate Search
 领域模型映射简介
 数据索引简介
 全文查询简介
 如何使用 Luke

在第1章, 我们讨论了集成全文搜索引擎 的复杂性 ,比如将 Apache Lucene整合到一个基于领域模型和使用Hibernate或Java持久化框架(JPA)的Java应用中。更确切的说,我们发现了3个有差异的地方 :
 结构不一致—如何将对象领域转换成纯文本的索引;如何处理索引中对象之间的关系。
 同步不匹配—如何保持数据库和索引实时同步。
 检索差异—如何将以领域模型为核心的数据检索方法和全文搜索技术进行 无缝的整合

Hibernate Search在平衡Hibernate ORM和Apache Lucene(全文搜索引擎)的技术差异中起到了杠杆一般的作用。本章为你提供了一个Hibernate Search的全局概览:如何使用,如何快速的构建全文搜索,以及如何将其融入到Hibernate的编程模型中。
Hibernate Search是一个用于补充Hibernate核心对于实体模型全文检索的支持不足而产生的项目。Hibernate大概是目前Java世界中最受欢迎的并且使用最多的ORM(对象-关系映射)工具(框架)。ORM的好处就是你可以以纯面向对象的方式(注:尽管我认为大部分是理想化的或者理论化的)来表达你的领域模型,并且它可以将这个模型透明的持久化到一个关系型数据库中。Hibernate(core)可以使用多种面向对象的方式去表达一个查询,如它内建的轻型的SQL扩展(HQL)、面向对象的条件API,或者使用原生的SQL语句等。通常像Hibernate这样的ORM框架都会提供比手写SQL更加优化的技术,如事务的控制(最后写进事务)、批量处理、第一/二级缓存。Hibernate基于开源许可协议发布,网址是http://hibernate.org
Hibernate Search的全文搜索技术完全基于Apache Lucene。而Lucene则是一个建立在Apache软件基金会(http://lucene.apache.org/java)的强大的全文搜索引擎库。它自发布以来迅速成为了Java语言中事实上的全文搜索技术标准。其成功的原因如下:
 免费开源
 易用且强大的API
 它对于数据索引和搜索是不可知论的(注:agnostic,不可知论,http://zh.wikipedia.org/zh/不可知论
 其性能和成熟度已经得到充分的证明
 和一个充满活力的社区

所有这些特质使得Lucene成为全文搜索解决方案中最好的资源库。这也就是为什么Hibernate Search要构建在Lucene之上的原因。
Hibernate Search同样是在开源协议下发布的,它是一座连接Lucene的特色功能和Hibernate世界的桥梁。Hibernate Search隐藏了部分低级和复杂的Lucene API,只提供必需的选项,以最少的工作来建立索引和检索Hibernate持久化模型。本章会让你较好的理解Hibernate Search是如何融入到Hibernate的编程模型中的,还介绍了如何快速上手使用Hibernate Search。
我们会以一个DVD音像店程序来演示两者的整合。当然不会写出整个程序来,而是把焦点放在领域模型和核心架构上,尤其是搜索引擎方面。
我们使用的对象模型很简单,只有一个‘Item’实体。Item表示一张DVD,我们想让用户根据DVD的一些相关属性来开始搜索。本章你将学会如何构建Hibernate Search、如何将元数据转化为可用于全文搜索的实体,以及对存放在数据库中的数据进行索引并在系统中检索匹配的数据。

需求: Hibernate Search需要些什么
Hibernate Search是在Java 5上开发的因此需要至少在Java开发工具包(JDK)或Java运行环境(JRE)5以上的版本才能运行。抛开这个限制不管,Hibernate Search可以运行在任何Hibernate可以运行的环境下,。几乎没可能列举出所有的Hibernate和Hibernate Search可运行的环境,我们仅列出其中比较典型的:
 部署在Java EE应用服务器中的程序(无论是否是Web程序)
 Servlet容器中的简单Web程序
 使用JBoss Seam的Web应用
 Swing程序
 所谓的轻量级依赖注入框架,如Spring、Guice、Web Beans
 Java SE上的应用程序
 一些使用了Hibernate的框架或平台,如Grails



展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部