基于 Hibernate搜索的数据库全文检索系

本文介绍了一个基于Hibernate Search的数据库全文检索系统,旨在解决传统数据库全文检索服务的不足,支持中文并易于扩展。系统包括索引更新、数据处理和查询模块,采用Hibernate ORM与Lucene相结合,通过事件监听器保持索引与数据库同步。此外,系统还实现了对非结构化数据如PPT、PDF、Excel的检索,并使用了中文分词器以支持中文检索。
摘要由CSDN通过智能技术生成

1
概述 数据库与全文检索系统的部署不同步,或是由于某些原因造

Internet中 80%的数据是属于网络隐藏的,虽然网络隐藏成索引库文件丢失时,手动模式可以依据数据库中数据恢复
的数据可以被访问,但却难以被搜索引擎检索,这些网络隐Lucene索引库。
藏的数据大多被存储在关系数据库中 [1]。而关系数据库本身(2)数据处理模块:它与索引更新模块有着紧密的联系,

提供的检索服务还有很多不足,例如:受分词技术的制约,主要负责对 Lucene不能直接处理的数据进行预处理工作,以

其全文检索服务不能很好地支持中文。对于存储在数据中的及提取数据中与数据处理相关联的信息。数据处理模块主要
非结构化数据,如采用二进制格式存储的文本文件,可能是 由处理桥 (HandlerBridge)构成,数据通过这些处理桥的处理
PPT, PDF或 Excel等多种类型,这些文件中的有用文本信息便能交予 Lucene建立索引了。
难以直接获取,数据库针对其内容提供的检索服务十分有限(3)查询模块:主要负责提供查询服务。查询模块依据外

且不易扩展。
部提供的查询参数,调用如日期、域内容、二次查询等相应

Hibernate搜索(Hibernate Search)是 Hibernate提供的一种的过滤器得到正确的查询结果。
开源的数据库检索工具。 Hibernate Search通过简单的设置和数据库全文检索系统的总体架构如图 1所示。
通用的 API,为数据持久域模型以及相应的 Hibernate框架[2]
提供全文检索支持。其内部调用 Apache Lucene[3],提供了对
传统 Lucene API的支持,并且弥补了 Lucene在为复杂的对
象域模型建立索引时,难以应对诸如建立时间索引、处理索
引结构与对象域模型不匹配、查询不匹配等缺陷[4]。

本文针对现有数据库全文检索服务的不足,通过采用
Hibernate Search等技术设计了一个能较好支持中文的、易于
扩展的数据库全文检索系统。

2
系统总体架构
数据库全文检索系统主要包括以下 3个模块:

数据库
Lucene
索引库
DocumentDocumentDocument Search
索引更新查询
Time
Index
查询过滤器 HandlerBridge
Word PPTPDF
Hibernate
+
Hibernate Search
(1)索引更新模块:主要有自动和手动 2种工作模式。在
自动模式下,索引更新模块主要负责监听外部通过 Hibernate
对数据库的访问。当数据库中的数据发生更改时,索引更新
模块通过调用相应的事件处理器对 Lucene的索引库进行同
步更新。手动模式是对自动模式在特殊情况下的补充。手动
模式与自动模式的最大区别在于,在手动模式下建立索引无
需通过 Hibernate的事件监听器,而直接由用户进行操作。当
图 1 数据库全文检索系统的总体架构

 


3 相关技术细节


3.1 映射关系的建立
要实现通过
Lucene API对数据库的全文检索,就必须为
Lucene索引库中
Document与
Hibernate框架中的
POJO(Plain
Old Java Object)类建立映射关系。
Hibernate ORM与
Lucene
全文索引库之间的区别与联系如下:


(1)业务所要使用到的基础数据单元:1)Hibernate ORM:
对象持久化得到的
POJO(对应关系数据库中的记录);
2)Lucene索引:
Document逻辑文件对象
(对应实际的物理
文件)。
(2)基础数据单元的组成结构:
1)Hibernate ORM:每个
POJO中包含有许多属性(对应关系数据库中单个记录的许

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值