当前位置: 首页 > 专利查询>崔春明专利>正文

一种实时全文搜索引擎事务处理的实现方法技术

技术编号:8387148 阅读:266 留言:0更新日期:2013-03-07 07:49
本发明专利技术公开了一种实时搜索引擎中支持事务处理的方法,其特点在于,实时分布式搜索引擎130是主存储区,存放索引接口操作完成后生效的索引数据;索引管理110有本地索引缓存120,且以事务为单位来组织,在事务过程中,索引管理110的接口将在缓存中临时存储新创建、修改和删除的数据,当索引数据操作完成提交且满足生效条件后,则将缓存中涉及此事务的数据以异步方式同步到实时分布式搜索引擎的主存储区中,从而实现了接口的事务操作。本发明专利技术实现了一种开销比较小的实时搜索引擎访问的事务操作,简单有效地保证了应用在实时更新搜索引擎时数据的完整性、事务隔离性和正确性,并保留原有的具有批量的处理特点的实时分布式搜索引擎不变。

【技术实现步骤摘要】

本专利技术涉及云计算搜索引擎中数据完整性问题,尤其涉及实时应用对搜索引擎进行数据更新时,能有效的解决数据完整性问题的实时搜索引擎事务操作方法。
技术介绍
全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索 方式。这个过程类似于通过字典中的检索字表查字的过程。全文检索引擎是按照全文检索理论建立起来的用于提供全文检索服务的软件系统。一般来说,全文检索需要具备建立索引和提供查询的基本功能,此外现代的全文检索系统还需要具有方便的用户接口、面向WWW的开发接口、二次应用开发接口等等。功能上,全文检索系统核心具有建立索引、处理查询返回结果集、增加索引、优化索引结构等等功能,外围则由各种不同应用具有的功能组成。结构上,全文检索系统核心具有索引引擎、查询引擎、文本分析引擎、对外接口等等,加上各种外围应用系统等等共同构成了全文检索系统。例如Apache Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索引擎。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,是一款非常优秀的全文搜索引擎。目前的像Solr这样的全文搜索引擎在保证数据完整性方面都有一定缺陷,所有的索引修改操作基本以单个文档为单位,所以一般只能保证单个文档的原子性事务操作,在一个事务中如果涉及多个文档读写操作时,如果在这个过程中某一步发生错误(可能时修改索引本身或修改数据库纪录造成的),就无法做到像传统数据库一样对已经写入的文档索引进行事务回滚操作,这种事务实现的缺陷无法满足那些对数据完整性要求高的应用。
技术实现思路
本专利技术所要解决的技术问题是公开了一种实时搜索引擎中支持事务处理的方法,简单有效地保证了应用在实时更新搜索引擎时数据的完整性、事务隔离性和正确性,并保留原有的具有批量的处理特点的实时分布式搜索引擎不变。如图I所示,索引管理模块110将分布式云搜索引擎130作为主存储区,存放提交后生效的索引数据,索引管理模块在本地有缓存存储区120,用于存放事务中涉及的临时索引数据。索引管理模块向上层应用提供索引接口,并在事务过程中在本地缓冲存储区中对临时数据进行操作,当所有数据操作都完成提交且满足生效条件后,在临时缓冲区中的数据将标记为完成状态,并通过异步方式同步到分布式搜索引擎实现事务持久化。临时缓冲区中处于已提交完成状态的数据,对于正在处理的事务以及新的事务也都同时生效,未提交的数据对于其它事务不生效,从而实现事务隔离功能。索引管理模块110和本地索引缓冲存储区120是本专利技术的主要内容。本专利技术方法具有以下特征·处理事务包括对索引数据的读取、增加、修改和删除操作。 所述主存储区和文件缓存存储区分别位于分布式搜索引擎服务器端和索引管理接口本地端,并且索引存储数据结构相同。·索引提交生效条件是当前事务中所有数据都正确操作完成。 事务处理过程包括如下典型步骤a.步骤一,应用客户端调用索引读写接口,并启用事务来进行索引数据操作; b.步骤二,索引读写接口将所述的事务中未提交的数据在文件缓冲存储区进行索引数据的增加和修改操作,并标记需删除的数据;c.步骤三,索引读写接口将事务中所要读取的数据首先在搜索引擎中查找,再根据缓冲存储区中已提交的数据和本事务中未提交的数据进行过滤,最后形成结果集返回给客户端;d.步骤四,判断所述各数据操作是否成功,是则执行步骤五,否则执行步骤六;e.步骤五,促发同步操作,将缓冲存储区中的临时持久化的事务数据同步到搜索引擎中,完成事务最终持久化;f.步骤六,直接返回数据操作失败,数据回滚,清除缓冲存储区中的临时数据。·索引管理接口本地缓冲区中的数据是以事务为单位进行存储,同一个事务中修改的数据在同一个数据文件中。·文件缓冲存储区具有可靠的持久化能力,并最终通过异步操作同步到搜索引擎中,实现最终持久化。 在缓冲存储区中的已提交的数据在同步到搜索引擎前,可以被其它事务读写。·如果有一个数据操作失败,则停止数据操作,回滚事务数据。·临时持久化的事务数据会批量同步到分布式搜索引擎,如果发生失败会多次重复尝试直至成功。下面结合附图进一步详细说明本专利技术的具体实施方式。附图说明图I是索引管理模块在整个系统中的位置示意2是索引管理模块详细实现示意3是本地索引同步到云搜索引擎步骤流程4是索引读写接口读索引步骤流程图具体实施例方式本专利技术主要是针对现有的文档全文搜索引擎不支持事务而提出的一种改进方法,如图I所示,主要逻辑由索引管理模块110来实现;图2是索引管理中关键模块详细实现方式示意图,其中包括索引读写接口 210 :接受应用读写请求并执行,对于读请求,索引接口将IndexReader索引读接口 225和云索引接口 240返回的搜索结果信息合并,然后经过索引过滤器230过滤,滤除已删除的文档,返回给应用服务;对于写请求,如果是添加操作,则直接将数据写入当前事务索引文件270,如果是修改操作,索引接口转换成两步操作,第一步操作将修改后的文档数据作为一条新索引数据写入当前事务索引文件270,第二步操作将在当前事务已删除文档列表文件中添加一条记录标记原有文档已经删除。Index Writer索引写接口 220 :完成索引数据写入当前事务索引文件操作。Index Reader索引读接口 225 :分别读取当前事务索引文件和已提交事务索引文件,并合并结果返回。Index Filter索引过滤器230 :根据已删除文档列表,过滤搜索结果中已删除的文档。 当前事务索引文件270 :保存当前事务中添加的索引数据。当前事务已删除文档列表文件275 :保存当前事务中被删除的文档信息。已提交事务索引文件280 :当前事务索引文件270在事务提交后,状态将变成已提交状态,并加入已提交事务索引文件列表。已提交删除文档列表文件285 :当前事务已删除文档文件275在事务提交后,状态将变成已提交状态,并加入已提交删除文档文件列表。索引事务管理250 :实现基本的事务操作接口,如Prepare、Commit和Rollback,供事务管理器调用,在事务提交后,未提交索引数据将加入已提交索引数据缓存中,变成已提交状态,同时事务中删除的文档列表也将加入已提交删除文档列表中。索引合并模块260:启动后台任务将已提交的索引数据,包括新增的和删除的,通过云索引接口 240同步到云搜索引擎290中,同时在索引管理模块本地端删除索引数据。云索引接口 240 :由云搜索引擎提供API接口给索引管理模块来对云搜索引擎进行读写访问。云搜索引擎290 :实现实时分布式文档全文检索引擎,如Apache Solr全文搜索引擎。对于应用发起的本地索引同步到云搜索引擎操作,如图3描述,索引管理模块处理步骤如下步骤310,读取已提交到索引数据缓存中的索引文件,可设置一次性处理文件数目的上限,这样可以提闻效率;步骤320,读取一个事务中涉及的删除文档数据信息;步骤330,读取一个事务中添加索引文档数据信息;步骤340,将步骤302和步骤303中所读取的数据打包,构建云索引数据批处理请求包;步骤350,通过云本文档来自技高网
...

【技术保护点】
一种实时全文搜索引擎事务操作的实现方法,其特征在于:将分布式搜索引擎作为主存储区,存放提交后生效的索引数据,索引管理接口端有本地文件缓存存储区,用于存放事务中涉及的临时索引数据。索引管理接口在事务过程中在本地文件缓冲存储区中对临时数据进行操作,当所有数据操作都完成提交且满足生效条件后,在临时缓冲区中的数据将标记为完成状态,并通过异步方式同步到分布式搜索引擎实现事务持久化。临时缓冲区中处于已提交完成状态的数据,对于正在处理的事务以及新的事务也都同时生效,未提交的数据只对当前事务生效,从而实现事务隔离功能。

【技术特征摘要】

【专利技术属性】
技术研发人员:崔春明
申请(专利权)人:崔春明
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1