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

文档序号:6431267阅读:238来源:国知局
专利名称:一种实时全文搜索引擎事务处理的实现方法
技术领域
本发明涉及云计算搜索引擎中数据完整性问题,尤其涉及实时应用对搜索引擎进行数据更新时,能有效的解决数据完整性问题的实时搜索引擎事务操作方法。
背景技术
全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索 方式。这个过程类似于通过字典中的检索字表查字的过程。全文检索引擎是按照全文检索理论建立起来的用于提供全文检索服务的软件系统。一般来说,全文检索需要具备建立索引和提供查询的基本功能,此外现代的全文检索系统还需要具有方便的用户接口、面向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,通过云索引接口发送批处理请求包给云搜索引擎;步骤360,判断是否还有待处理的事务索引文件;步骤370,如果还有事务索引文件,则转向步骤320 ;步骤380,刷新系统的索引读取接口,并删除本次处理所涉及的所有本地索引文件;对于应用发起的读取文档请求操作,如图4描述,索引读写接口处理步骤如下步骤410,索引接口解析应用的索引查询请求,并执行步骤420和步骤425来查询数据。步骤420,查询本地索引缓存,包括未提交的事务数据和已提交的事务数据。步骤425,通过云索引接口来查询云搜索引擎。步骤430,将步骤420和步骤425返回的数据合并。步骤440,根据为提交的事务中删除的文档列表文件和已提交的删除文档列表文件过滤步骤430中计算出来的结果。步骤450,根据排序条件,将结果排序并返回给应用。
本发明的效果分析实时云全文搜索引擎的事务处理具有比较广泛的应用场合。但现有的云搜索引擎一般在设计时为了支持海量数据搜索的要求,对可用性要求较高,而对一致性和隔离性要求降低,从而牺牲的数据的事务处理能力,满足不了一些事务要求高的应用的需求。本发明提供的这种实现方法,不需要修改原有的云搜索引擎设计。实现方法非常简单,并且事务操作都在应用本地完成,所需要的开销非常小。从而简洁有效的解决了实时搜索引擎的事务处理及数据完整性问题。以上所述仅为本发明的较佳实施范例,并非用来限定本发明的实施范围;凡是依据本发明所作的等效变化和修改,都被本发明的专利范围所涵盖,因此,本发明的保护范围应以权利要求所述的保护范围为准。
权利要求
1.一种实时全文搜索引擎事务操作的实现方法,其特征在于 将分布式搜索引擎作为主存储区,存放提交后生效的索引数据,索引管理接口端有本地文件缓存存储区,用于存放事务中涉及的临时索引数据。
索引管理接口在事务过程中在本地文件缓冲存储区中对临时数据进行操作,当所有数据操作都完成提交且满足生效条件后,在临时缓冲区中的数据将标记为完成状态,并通过异步方式同步到分布式搜索引擎实现事务持久化。
临时缓冲区中处于已提交完成状态的数据,对于正在处理的事务以及新的事务也都同时生效,未提交的数据只对当前事务生效,从而实现事务隔离功能。
2.根据权利要求I所述的方法,其特征在于,所述处理事务包括对索引数据的读取、增加、修改和删除操作。
3.根据权利要求I所述的方法,其特征在于,所述主存储区和文件缓存存储区分别位于分布式搜索引擎服务器端和索引管理接口本地端,并且索引存储数据结构相同。
4.根据权利要求I所述的方法,其特征在于,索引提交生效条件是当前事务中所有数据都正确操作完成。
5.根据权利要求1、2或3所述的方法,其特征在于,进一步包括如下步骤 步骤一,应用客户端调用索引读写接口,并启用事务来进行索引数据操作; 步骤二,索引读写接口将所述的事务中未提交的数据在文件缓冲存储区进行索引数据的增加和修改操作,并标记需删除的数据; 步骤三,索引读写接口将事务中所要读取的数据首先在搜索引擎中查找,再根据缓冲存储区中已提交的数据和本事务中未提交的数据进行过滤,最后形成结果集返回给客户端; 步骤四,判断所述各数据操作是否成功,是则执行步骤五,否则执行步骤六; 步骤五,促发同步操作,将缓冲存储区中的临时持久化的事务数据同步到搜索引擎中,完成事务最终持久化; 步骤六,直接返回数据操作失败,数据回滚,清除缓冲存储区中的临时数据。
6.根据权利5所述的方法,其特征在于,索引管理接口本地缓冲区中的数据是以事务为单位进行存储,同一个事务中修改的数据在同一个数据文件中。
7.根据权利5所述的方法,其特征在于,文件缓冲存储区具有可靠的持久化能力,并最终通过异步操作同步到搜索引擎中,实现最终持久化。
8.根据权利5所述的方法,其特征在于,在缓冲存储区中的已提交的数据在同步到搜索引擎前,可以被其它事务读写。
9.根据权利5所述的方法,其特征在于,所述步骤二和步骤三中,如果有一个数据操作失败,则停止数据操作,并执行步骤六。
10.根据权利5所述的方法,其特征在于,所述步骤三中,临时持久化的事务数据会被批量同步到分布式搜索引擎,如果发生失败会多次重复尝试直至成功。
全文摘要
本发明公开了一种实时搜索引擎中支持事务处理的方法,其特点在于,实时分布式搜索引擎130是主存储区,存放索引接口操作完成后生效的索引数据;索引管理110有本地索引缓存120,且以事务为单位来组织,在事务过程中,索引管理110的接口将在缓存中临时存储新创建、修改和删除的数据,当索引数据操作完成提交且满足生效条件后,则将缓存中涉及此事务的数据以异步方式同步到实时分布式搜索引擎的主存储区中,从而实现了接口的事务操作。本发明实现了一种开销比较小的实时搜索引擎访问的事务操作,简单有效地保证了应用在实时更新搜索引擎时数据的完整性、事务隔离性和正确性,并保留原有的具有批量的处理特点的实时分布式搜索引擎不变。
文档编号G06F17/30GK102955792SQ201110242460
公开日2013年3月6日 申请日期2011年8月23日 优先权日2011年8月23日
发明者崔春明 申请人:崔春明
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1