CN101650741A - 一种分布式全文检索的索引实时更新的方法和系统 - Google Patents
一种分布式全文检索的索引实时更新的方法和系统 Download PDFInfo
- Publication number
- CN101650741A CN101650741A CN200910168335A CN200910168335A CN101650741A CN 101650741 A CN101650741 A CN 101650741A CN 200910168335 A CN200910168335 A CN 200910168335A CN 200910168335 A CN200910168335 A CN 200910168335A CN 101650741 A CN101650741 A CN 101650741A
- Authority
- CN
- China
- Prior art keywords
- index
- information
- server
- internal memory
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出分布式全文检索的索引实时更新的方法和系统。当有索引信息更新时,由信息发布服务器向通知服务器发送更新请求,在更新请求中包括索引分类信息的数据;由通知服务器将更新请求分配到对应的消息主题队列中,并将更新请求发送到订阅相应消息主题的请求分发器;根据记载有索引分类与索引服务器之间关系的路由信息表,由请求分发器向与索引分类对应的索引服务器发送更新请求;索引服务器接收请求分发器发送的索引更新请求,读取索引更新信息和操作类型;对读取到的索引更新信息按照索引结构进行字段规范化,根据操作类型对规范化后的索引更新信息进行增量操作。本发明使得对索引信息的更新操作能够实时的反映到索引中。
Description
技术领域
本发明属于搜索引擎信息索引技术领域,尤其涉及一种分布式全文检索的索引实时更新的方法和系统。
背景技术
搜索引擎已成为人们查询和获取信息的重要手段。越来越多的网站开始使用基于搜索引擎的搜索来取代传统的数据库搜索。与传统的数据库查询方式不同,信息需要先建成索引方能通过搜索引擎检索得到。搜索引擎具有搜索速度快、搜索准确率高、支持多语言分词等优势。
但是,信息的实时更新是搜索引擎的难点。针对这个问题,业界已经研究了几种比较可行的解决方案:
第一,搜索引擎主动轮询数据库的方式
搜索引擎在后台启动一个轮询进程或线程,定时的扫描数据库数据,发现有更新数据时则读取更新的数据,再经过数据处理流程,将数据写入索引。这种方案实现简单,但具有以下缺点:
(1)数据库需要设置额外字段标志每一条记录的状态和操作时间,搜索引擎根据标志和操作时间读取需要更新的记录,对索引进行批量的增量更新。
(2)被删除记录需要在数据库中保存一段时间才能进行物理删除,增加了对存储空间的要求。
(3)部署数据库和搜索引擎的服务器需要进行时间同步,保证其时间的一致性。
(4)定时轮询对数据库系统形成一定压力。
第二,搜索引擎提供一个增量更新的服务接口的方式
该方案要求搜索引擎以服务的方式提供一个更新索引的接口,由数据更新系统主动对搜索引擎发起一个更新请求。服务接口一般采用同步通信方式,因此,一旦更新请求量比较大,系统性能将明显下降,无法支持大批量请求的实时更新。
发明内容
本发明提出一种实时更新索引信息的方法,并以该方法为基础,构建一个具有实时索引的分布式索引信息更新系统,使得对索引信息的更新操作能够实时的反映到索引中,可以被前端用户检索到更新后的索引信息。
根据本发明的一个方面,提出分布式全文检索的索引实时更新的方法,包括以下步骤:当有索引信息更新时,由信息发布服务器向通知服务器发送更新请求,在更新请求中包括索引分类信息的数据;由通知服务器将更新请求分配到对应的消息主题队列中,并将更新请求发送到订阅相应消息主题的请求分发器;每一个消息主题包含多类索引分类,负责维护所包含的索引分类对应的索引更新请求;根据记载有索引分类与索引服务器之间关系的路由信息表,由请求分发器向与索引分类对应的索引服务器发送更新请求;索引服务器接收请求分发器发送的索引更新请求,或主动向信息发布服务器发起数据访问请求,读取索引更新信息和操作类型;对读取到的索引更新信息按照索引结构进行字段规范化,根据操作类型对规范化后的索引更新信息进行增量操作。
进一步,索引分类包括至少如下之一:地域、数据所属专业领域、索引日期、信息id范围。
进一步,建立记载有索引分类与索引服务器之间关系的路由信息表的操作,包括以下步骤:每个索引服务器均在请求分发器上注册,在注册请求中包括该索引服务器的索引分类;根据索引分类与索引服务器之间的对应关系建立路由信息表。
进一步,根据操作类型对规范化后的索引更新信息进行增量操作,包括如下之一:当新增索引更新信息时,直接加入内存索引;当删除索引更新信息时,判断要删除的索引更新信息位于内存索引还是文件索引,再直接进行删除;当修改索引更新信息时,判断索引更新信息位于内存索引还是文件索引,如果位于内存索引,删除原有记录,再将修改后的索引更新信息新增到内存索引;如果位于文件索引,在内存索引中新增索引更新信息,再从文件索引中删除该索引更新信息。
进一步,当内存索引到达设定条件时,将内存索引合并到文件索引。
进一步,还包括在内存索引故障时执行的容错控制,包括以下步骤:由容错模块将需要恢复的时间段信息、信息发布服务器信息发送到索引服务器,并通知其启动索引恢复过程进行内存索引恢复。
根据本发明的另一方面,还提出分布式全文检索的索引实时更新的系统,包括:信息发布服务器,当有索引信息更新时,向通知服务器发送更新请求,在更新请求中包括索引分类信息的数据;通知服务器,维护消息主题队列,在每一个消息主题队列中包含多类索引分类的索引更新请求消息,当更新请求消息到达消息主题队列时,将更新请求消息发送到订阅该主题的请求分发器;请求分发器,根据记载有索引分类与索引服务器之间关系的路由信息表,向与索引分类对应的索引服务器发送更新请求;索引服务器包括:数据预处理模块,接收请求分发器的索引更新消息,或主动向信息发布服务器发起数据访问获得索引更新消息,解析索引更新信息和操作类型,对读取到的索引更新信息按照索引结构进行字段规范化,并发送给索引模块;索引模块,根据操作类型对数据预处理模块处理后的索引更新信息进行增量操作。
进一步,索引分类包括至少如下之一:地域、数据所属专业领域、索引日期、信息id范围。
进一步,请求分发器接收索引服务器发送的注册请求,在注册请求中包括该索引服务器的索引分类,根据索引分类与索引服务器的对应关系建立路由信息表。
进一步,索引服务器执行的增量操作包括如下之一:当新增索引更新信息时,直接加入内存索引;当删除索引更新信息时,判断要删除的索引更新信息位于内存索引还是文件索引,再直接进行删除;当修改索引更新信息时,判断索引更新信息位于内存索引还是文件索引,如果位于内存索引,删除原有记录,再将修改后的索引更新信息新增到内存索引;如果位于文件索引,在内存索引中新增索引更新信息,再从文件索引中删除该索引更新信息。
进一步,索引服务器在内存索引到达设定条件时,将内存索引合并到文件索引。
进一步,还包括容错模块,在内存索引发生故障时,将索引恢复请求发送到索引服务器的数据源主动访问模块,索引恢复请求包括需要恢复的时间段信息、信息发布服务器信息;数据源主动访问模块,接收容错模块的索引恢复请求,向信息发布服务器发起数据访问请求,读取需要恢复的时间段内的索引更新信息和操作类型,并发送给数据预处理模块。
与现有技术相比,本发明至少具有如下之一的优点和效果:
采用通知的方式获取索引更新信息,实现真正意义上的实时索引更新,显著提高前端用户体验。
分布式的索引存储,支持海量数据索引和高效的索引处理。
多重备份结合主动轮询的容错机制,保证系统稳定。
附图说明
图1为本发明分布式全文检索的索引实时更新的方法流程图。
图2为本发明分布式全文检索的索引实时更新的系统结构图。
图3为本发明系统中索引服务器的结构图。
具体实施方式
本发明采用分布式的索引结构,通知和轮询相结合的数据获取方式,将对索引的更新操作实时反映到工作索引上,保证前端可以实时检索到最新的信息。
下面将结合附图和实施例详细说明本发明。
图1为本发明分布式全文检索的索引实时更新的方法流程图。该方法具体包括以下步骤:
在步骤101,当有索引信息更新时,由信息发布服务器向通知服务器发送更新请求,在更新请求中包括索引分类信息的数据。
发送更新请求的操作可以是异步消息机制,在信息发布服务器和请求分发器之间建立一个消息通道,由通知服务器维护。信息发布触发事件通知请求分发器获取更新信息。例如,在信息发布服务器和请求分发器之间建立一个JMS消息通道,信息发布服务器将信息更新作为一个订阅主题(Topic),请求分发器作为一个消息订阅者(Subscriber),信息发布服务器将更新操作发布到Topic上,通过JMS消息通知请求分发器读取更新信息。
在步骤102,由通知服务器维护一系列消息主题队列,每一个消息主题队列可包含多类索引分类的索引更新请求消息,当更新请求消息到达消息主题队列时,将更新请求消息发送到订阅该主题的请求分发器。
索引分类可以是如下之一:地域、数据所属专业领域、索引日期、信息id范围等。
在步骤103,根据记载有索引分类与索引服务器之间关系的路由信息表,由请求分发器向与索引分类对应的索引服务器发送更新请求。
请求分发器可以是分布式部署的,可根据其负责的索引分类,订阅通知服务器上对应的消息。请求分发器设置、安装索引分类,将更新请求分类,再分发到对应分类的索引服务器上。请求分发器与索引服务器之间维持路由信息表。每个索引服务器均在请求分发器上注册,在注册请求中包括该索引服务器的索引分类,由请求分发器根据索引分类与索引服务器的对应关系生成路由信息表,保证索引更新请求正确的传递到对应的索引服务器。
路由信息表可设置在请求分发器中,也可配置独立的路由分发器。当路由信息表设置在独立的路由分发器中,请求分发器在接收到更新请求时,到该路由分发器中获取该路由信息表。路由信息可根据索引分类生成。例如,可以根据信息id范围结合地域编码划分索引的分布,则路由信息可由信息id范围和地域编码构成,请求分发器根据记录的id和地域编码,查路由信息表取得路由,再访问对应的索引服务器。路由信息表支持动态调整,保证在不停止原有索引服务的前提下扩展索引服务。
在步骤104,索引服务器接收请求分发器发送的索引更新请求,解析并读取索引更新信息和操作类型。
索引服务器可以是分布式部署的,从而索引也是分布式存放的。索引服务器可以接收请求分发器发送的索引更新请求,也可以主动到信息发布服务器获取更新信息。例如,信息发布服务器可开放数据源访问权限,由索引服务器定时对数据库进行轮询访问,读取数据的更新信息。数据源可以是数据库,也可以是如web接口等其他形式提供的数据接口。
在步骤105,对读取到的索引更新信息按照索引结构进行字段规范化,根据操作类型对规范化后的索引更新信息进行增量操作。
每一个索引服务器上保存的索引信息包括内存索引和文件索引。索引采用倒排的数据结构。内存索引保存最新更新的记录,文件索引保存原有信息以及合并的内存索引的索引信息。对于索引更新信息,如果是新增记录,直接加入内存索引。如果是删除,则判断记录位于内存索引还是文件索引,再直接进行删除。如果是修改,则判断记录位于内存索引还是文件索引,若位于内存索引,则删除原有记录,再将修改后的记录新增到内存索引;若位于文件索引,则在内存索引中新增记录,再从文件索引中删除该记录。
内存索引在一定条件下将合并到文件索引。合并之后,内存索引清空。合并的条件可以是如下之一:索引占用的内存空间。当内存索引占用内存空间到达系统设定大小,将内存索引合并到文件索引;索引包含的记录数。当内存索引包含的记录数到达系统设定最大值,将内存索引合并到文件索引;时间点。当服务器时间到达系统指定的一个时间点,将内存索引合并到文件索引;系统资源空闲程度。当索引服务器的资源使用率,例如CPU使用率、内存占用率、IO读写量等,低于系统指定值,将内存索引合并到文件索引中。
本发明采用通知的方式获取索引更新信息,实现真正意义上的分布式实时索引更新,显著提高前端用户体验。在获取索引更新信息后,分布式的存储索引更新信息,支持海量数据索引和高效的索引处理。
此外,本发明还可以进一步包括对多重索引信息进行容错备份操作,通过容错模块实时监控内存索引状态,在内存索引出错时,切换到备份的索引信息,保证了系统的稳定性。还进一步通过主动访问数据源的方式进行内存索引的容错控制。
采用多节点备份容错方式,根据索引重要程度或检索频繁程度等,进行一对一或者多对一的索引备份。负责备份工作的服务器可单独为某一索引服务器备份即一对一备份,也可以为多个索引服务器备份即多对一备份,同一个索引服务器也可以配备两台或多台服务器进行热备份。视具体工作的索引服务器的负载而定。一旦工作服务器出现故障,请求分发器将请求发到备份服务器上,保证请求的正常处理。
在每个索引服务器上对索引信息进行容错备份,将正确的在线索引备份为线下索引,一旦在线索引损坏,将切换为线下索引。例如,可在每一台索引服务器存放完全相同的两份索引,分为线上索引online和线下索引offline。一般情况下,索引服务访问online,一旦索引服务发现online无法访问或出错,则主动切换到offline,将offline指定为online,保证检索服务稳定。
采用轮询方式实现内存索引的容错操作。容错模块记录初始化内存索引的时间点,检测内存索引的可用性,一旦发现内存索引有误,将online指定为offline。将需要恢复的时间段信息、信息发布服务器信息发送到索引服务器,并通知其启动索引恢复过程进行索引恢复。例如,每次合并内存索引之后,容错模块记下时间点,在发现内存索引故障时,将合并内存索引的时间点、故障时间点以及信息发布服务器的信息发给索引服务器,由索引服务器读取上一个时间点到故障点的更新数据,对内存索引进行恢复。上一个时间点是指上一次内存索引与文件索引合并操作成功完成的时间点。
图2为本发明分布式全文检索的索引实时更新的系统结构图。包括信息发布服务器、通知服务器、请求分发服务器、索引服务器。
信息发布服务器,当有索引信息更新时,向通知服务器发送更新请求,在更新请求中包括索引分类信息的数据。
发送更新请求的操作可以是异步消息机制,在信息发布服务器和请求分发器之间建立一个消息通道,由信息发布触发事件通知请求分发器获取更新信息。例如,在信息发布服务器和请求分发器之间建立一个JMS消息通道,信息发布服务器将信息更新作为一个订阅主题(Topic),请求分发器作为一个消息订阅者(Subscriber),信息发布服务器将更新操作发布到Topic上,通过JMS消息通知请求分发器读取更新信息。
通知服务器,维护一系列消息主题队列,每一个消息主题队列可包含若干类索引分类的索引更新请求消息,当更新请求消息到达消息主题队列时,将更新请求消息发送到订阅该主题的请求分发器。索引分类可以是如下之一:地域、数据所属专业领域、索引日期、信息id范围等。
请求分发器,根据记载有索引分类与索引服务器之间关系的路由信息表,向与索引分类对应的索引服务器发送更新请求。
请求分发器可以是分布式部署的,可根据其负责的索引分类,订阅通知服务器上对应的消息。请求分发器设置、安装索引分类,将更新请求分类,再分发到对应分类的索引服务器上。请求分发器与索引服务器之间维持路由信息表。每个索引服务器均在请求分发器上注册,在注册请求中包括该索引服务器的索引分类,由请求分发器根据索引分类与索引服务器的对应关系生成路由信息表,保证索引更新请求正确的传递到对应的索引服务器。
路由信息表可设置在请求分发器中,也可配置独立的路由分发器。当路由信息表设置在独立的路由分发器中,请求分发器在接收到更新请求时,到该路由分发器中获取该路由信息表。路由信息表可根据索引分类生成。例如,可以根据信息id范围结合地域编码划分索引的分布,则路由信息可由信息id范围和地域编码构成,请求分发器根据记录的id和地域编码,查路由信息表取得路由,再访问对应的索引服务器。路由信息表支持动态调整,保证在不停止原有索引服务的前提下扩展索引服务。
索引服务器,可以接收请求分发器的索引更新消息,也可以主动向信息发布服务器发起数据访问获得索引更新消息,解析索引更新信息和操作类型,对读取到的索引更新信息按照索引结构进行字段规范化,根据操作类型对规范化后的索引更新信息进行增量操作。
索引服务器可以是分布式部署的,从而索引也是分布式存放的。索引服务器主动到信息发布服务器获取更新信息。例如,信息发布服务器可开放数据源访问权限,由索引服务器定时对数据库进行轮询访问,读取数据的更新信息。数据源可以是数据库,也可以是如web接口等其他形式提供的数据接口。
每一个索引服务器上的索引信息包括内存索引和文件索引。索引采用倒排的数据结构。内存索引保存最新更新的记录,文件索引保存原有信息以及合并的内存索引的索引信息。对于索引更新信息,如果是新增记录,直接加入内存索引。如果是删除,则判断记录位于内存索引还是文件索引,再直接进行删除。如果是修改,则判断记录位于内存索引还是文件索引,若位于内存索引,则删除原有记录,再将修改后的记录新增到内存索引;若位于文件索引,则在内存索引中新增记录,再从文件索引中删除该记录。
内存索引在一定条件下将合并到文件索引。合并之后,内存索引清空。合并的条件可以是如下之一:索引占用内存空间。当内存索引占用内存空间到达系统设定大小,将内存索引合并到文件索引;索引包含记录数。当内存索引包含的记录数到达系统设定最大值,将内存索引合并到文件索引;时间点。当服务器时间到达系统指定的一个时间点,将内存索引合并到文件索引;系统资源空闲程度。当索引服务器的资源使用率,例如CPU使用率、内存占用率、IO读写量等,低于系统指定值,将内存索引合并到文件索引中。
本发明采用通知的方式获取索引更新信息,实现真正意义上的实时索引更新,显著提高前端用户体验。在获取索引更新信息后,分布式的存储索引更新信息,支持海量数据索引和高效的索引处理。
此外,本发明还可以进一步包括容错模块,用于对多重索引信息进行容错备份。通过容错模块实时监控内存索引状态,在内存索引出错时,切换到备份的索引信息,保证了系统的稳定性。还进一步通过主动访问数据源的方式进行内存索引的容错控制。
容错模块可以采用多节点备份容错方式,根据索引重要程度或检索频繁程度等,进行一对一或者多对一的索引备份。负责备份工作的服务器可单独为某一索引服务器备份即一对一备份,也可以为多个索引服务器备份即多对一备份,同一个索引服务器也可以配备两台或多台服务器进行热备份。视具体工作的索引服务器的负载而定。一旦工作服务器出现故障,请求分发器将请求发到备份服务器上,保证请求的正常处理。
容错模块可以设置在索引服务器上,在每个索引服务器上对索引信息进行容错备份,将正确的在线索引备份为线下索引,一旦在线索引损坏,将切换为线下索引。例如,可在每一台索引服务器存放完全相同的两份索引,分为线上索引online和线下索引offline。一般情况下,索引服务访问online,一旦索引服务发现online无法访问或出错,则主动切换到offline,将offline指定为online,保证检索服务稳定。
采用轮询方式实现内存索引的容错操作。容错模块记录初始化内存索引的时间点,检测内存索引的可用性,一旦发现内存索引有误,将online指定为offline。将需要恢复的时间段信息、信息发布服务器信息发送到索引服务器,并通知其启动索引恢复过程进行索引恢复。例如,每次合并内存索引之后,容错模块记下时间点,在发现内存索引故障时,将合并内存索引的时间点、故障时间点以及信息发布服务器的信息发给索引服务器,由索引服务器读取上一个时间点到故障点的更新数据,对内存索引进行恢复。上一个时间点是指上一次内存索引与文件索引合并操作成功完成的时间点。
图3为本发明系统中索引服务器的结构图。包括数据源主动访问模块、数据预处理模块、索引模块。
数据源主动访问模块,用于在内存索引发生故障时,配合容错模块执行容错控制,接收容错模块的索引恢复请求,获取恢复时间段信息,向信息发布服务器发起数据访问请求,并读取索引更新信息和操作类型,发送到数据预处理模块进行后续处理。
数据预处理模块,接收请求分发器的索引更新消息,也可以主动向信息发布服务器发起数据访问获得索引更新消息,解析索引更新信息和操作类型,对读取到的索引更新信息按照索引结构进行字段规范化,并发送给索引模块。
索引模块,根据操作类型对数据预处理模块处理后的索引更新信息进行增量操作。其中,索引分为内存索引和文件索引。
对于索引更新信息,如果是新增记录,直接加入内存索引。如果是删除,则判断记录位于内存索引还是文件索引,再直接进行删除。如果是修改,则判断记录位于内存索引还是文件索引,若位于内存索引,则删除原有记录,再将修改后的记录新增到内存索引;若位于文件索引,则在内存索引中新增记录,再从文件索引中删除该记录。
本发明的内存索引在一定条件下,还将内存索引的信息合并到文件索引。合并之后,内存索引清空。因此,文件索引保存原有索引信息以及合并的内存索引的索引信息。
合并的条件可以是如下之一:索引占用内存空间。当内存索引占用内存空间到达系统设定大小,将内存索引合并到文件索引;索引包含记录数。当内存索引包含的记录数到达系统设定最大值,将内存索引合并到文件索引;时间点。当服务器时间到达系统指定的一个时间点,将内存索引合并到文件索引;系统资源空闲程度。当索引服务器的资源使用率,例如CPU使用率、内存占用率、IO读写量等,低于系统指定值,将内存索引合并到文件索引中。
下面将结合实施例对本发明进行说明。
信息门户作为信息发布服务器,用户发布信息经过门户处理进入门户的信息发布数据库。
采用JMS消息服务实现通知机制。在信息门户与请求分发器之间架设一个JMS消息服务器作为通知服务器。JMS服务器上设置一个消息主题Topic,在信息门户上发布的信息,将转变成索引更新请求发布到Topic上。
实现一个请求分发器Dispatcher,并作为Topic的订阅者,登记到JMS消息服务器上。
根据索引分类配备多个索引服务器IndexServer,每个IndexServer均在Dispatcher上注册,由Dispatcher根据索引分类生成路由信息表,保证索引更新请求正确的传递到对应的IndexServer。
每台IndexServer均部署数据预处理模块DataProcessor和索引模块Indexer。
DataProcessor将Dispatcher发过来的数据处理成符合索引分类的数据记录。
Indexer根据更新类型(增、删、改),将记录更新到索引信息中。如果是新增,直接在内存索引新增;如果是删除,判断在内存索引还是文件索引再删除;如果是修改,且记录位于内存索引,则直接修改索引记录,如果位于文件索引,则在内存索引新增记录,并将文件索引中的记录删除。
Indexer在符合索引合并条件的情况下,将内存索引合并到文件索引中,并清空内存索引。采用时间点的合并条件,也可以按内存索引占用空间、内存记录数、服务器空闲程度等作为合并条件。
本领域的技术人员应当可以根据本发明的实施方式和实施例作出相应的变形和修改,但是,所述变形和修改都应覆盖在本权利要求的保护范围之内。
Claims (12)
1.分布式全文检索的索引实时更新的方法,包括以下步骤:
当有索引信息更新时,由信息发布服务器向通知服务器发送更新请求,在更新请求中包括索引分类信息的数据;
由通知服务器将更新请求分配到对应的消息主题队列中,并将更新请求发送到订阅相应消息主题的请求分发器;每一个消息主题包含多类索引分类,负责维护所包含的索引分类对应的索引更新请求;
根据记载有索引分类与索引服务器之间关系的路由信息表,由请求分发器向与索引分类对应的索引服务器发送更新请求;
索引服务器接收请求分发器发送的索引更新请求,或主动向信息发布服务器发起数据访问请求,读取索引更新信息和操作类型;
对读取到的索引更新信息按照索引结构进行字段规范化,根据操作类型对规范化后的索引更新信息进行增量操作。
2.根据权利要求1所述实时更新的方法,其中,索引分类包括至少如下之一:地域、数据所属专业领域、索引日期、信息id范围。
3.根据权利要求1所述实时更新的方法,其中,建立记载有索引分类与索引服务器之间关系的路由信息表的操作,包括以下步骤:
每个索引服务器均在请求分发器上注册,在注册请求中包括该索引服务器的索引分类;
根据索引分类与索引服务器之间的对应关系建立路由信息表。
4.根据权利要求1所述实时更新的方法,其中,根据操作类型对规范化后的索引更新信息进行增量操作,包括如下之一:
当新增索引更新信息时,直接加入内存索引;
当删除索引更新信息时,判断要删除的索引更新信息位于内存索引还是文件索引,再直接进行删除;
当修改索引更新信息时,判断索引更新信息位于内存索引还是文件索引,如果位于内存索引,删除原有记录,再将修改后的索引更新信息新增到内存索引;如果位于文件索引,在内存索引中新增索引更新信息,再从文件索引中删除该索引更新信息。
5.根据权利要求4所述实时更新的方法,其中,当内存索引到达设定条件时,将内存索引合并到文件索引。
6.根据权利要求4或5所述实时更新的方法,其中,还包括在内存索引故障时执行的容错控制,包括以下步骤:
由容错模块将需要恢复的时间段信息、信息发布服务器信息发送到索引服务器,并通知其启动索引恢复过程进行内存索引恢复。
7.分布式全文检索的索引实时更新的系统,包括:
信息发布服务器,当有索引信息更新时,向通知服务器发送更新请求,在更新请求中包括索引分类信息的数据;
通知服务器,维护消息主题队列,在每一个消息主题队列中包含多类索引分类的索引更新请求消息,当更新请求消息到达消息主题队列时,将更新请求消息发送到订阅该主题的请求分发器;
请求分发器,根据记载有索引分类与索引服务器之间关系的路由信息表,向与索引分类对应的索引服务器发送更新请求;
索引服务器包括:
数据预处理模块,接收请求分发器的索引更新消息,或主动向信息发布服务器发起数据访问获得索引更新消息,解析索引更新信息和操作类型,对读取到的索引更新信息按照索引结构进行字段规范化,并发送给索引模块;
索引模块,根据操作类型对数据预处理模块处理后的索引更新信息进行增量操作。
8.根据权利要求7所述实时更新的系统,其中,索引分类包括至少如下之一:地域、数据所属专业领域、索引日期、信息id范围。
9.根据权利要求7所述实时更新的系统,其中,请求分发器接收索引服务器发送的注册请求,在注册请求中包括该索引服务器的索引分类,根据索引分类与索引服务器的对应关系建立路由信息表。
10.根据权利要求7所述实时更新的系统,其中,索引服务器执行的增量操作包括如下之一:
当新增索引更新信息时,直接加入内存索引;
当删除索引更新信息时,判断要删除的索引更新信息位于内存索引还是文件索引,再直接进行删除;
当修改索引更新信息时,判断索引更新信息位于内存索引还是文件索引,如果位于内存索引,删除原有记录,再将修改后的索引更新信息新增到内存索引;如果位于文件索引,在内存索引中新增索引更新信息,再从文件索引中删除该索引更新信息。
11.根据权利要求10所述实时更新的系统,其中,索引服务器在内存索引到达设定条件时,将内存索引合并到文件索引。
12.根据权利要求7所述实时更新的系统,还包括:
容错模块,在内存索引发生故障时,将索引恢复请求发送到索引服务器的数据源主动访问模块,索引恢复请求包括需要恢复的时间段信息、信息发布服务器信息;
数据源主动访问模块,接收容错模块的索引恢复请求,向信息发布服务器发起数据访问请求,读取需要恢复的时间段内的索引更新信息和操作类型,并发送给数据预处理模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101683353A CN101650741B (zh) | 2009-08-27 | 2009-08-27 | 一种分布式全文检索的索引实时更新的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101683353A CN101650741B (zh) | 2009-08-27 | 2009-08-27 | 一种分布式全文检索的索引实时更新的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101650741A true CN101650741A (zh) | 2010-02-17 |
CN101650741B CN101650741B (zh) | 2011-02-09 |
Family
ID=41672979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101683353A Active CN101650741B (zh) | 2009-08-27 | 2009-08-27 | 一种分布式全文检索的索引实时更新的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101650741B (zh) |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004778A (zh) * | 2010-11-19 | 2011-04-06 | 清华大学 | 一种云环境中的文本索引在线更新方法 |
CN102571710A (zh) * | 2010-12-24 | 2012-07-11 | 中兴通讯股份有限公司 | 信息订阅方法及系统 |
CN103051511A (zh) * | 2011-10-11 | 2013-04-17 | 阿里巴巴集团控股有限公司 | 一种消息数据的处理方法及装置 |
CN103186622A (zh) * | 2011-12-30 | 2013-07-03 | 北大方正集团有限公司 | 一种全文检索系统中索引信息的更新方法以及装置 |
CN103379021A (zh) * | 2012-04-24 | 2013-10-30 | 中兴通讯股份有限公司 | 实现分布式消息队列的方法及系统 |
CN103559301A (zh) * | 2013-11-14 | 2014-02-05 | 华为技术有限公司 | 更新数据的方法、数据库触发器和搜索引擎 |
CN103678577A (zh) * | 2013-12-10 | 2014-03-26 | 新浪网技术(中国)有限公司 | 一种数据更新方法及装置 |
CN104346697A (zh) * | 2014-10-31 | 2015-02-11 | 亚信科技(南京)有限公司 | 一种分级发布产品的方法及系统 |
CN104750746A (zh) * | 2013-12-30 | 2015-07-01 | 中国移动通信集团上海有限公司 | 业务数据的处理方法、装置及分布式内存数据库系统 |
CN105045684A (zh) * | 2015-07-16 | 2015-11-11 | 北京京东尚科信息技术有限公司 | 索引切换和索引控制的方法及装置 |
CN105208105A (zh) * | 2015-08-26 | 2015-12-30 | 北京奇虎科技有限公司 | 索引更新方法和装置 |
CN105243099A (zh) * | 2015-09-17 | 2016-01-13 | 成都优译信息技术有限公司 | 一种基于翻译文件的大数据实时存储方法 |
CN105468641A (zh) * | 2014-09-09 | 2016-04-06 | 上海盛大网络发展有限公司 | 一种搜索云消息实时分发系统及方法 |
CN105939335A (zh) * | 2015-03-05 | 2016-09-14 | 国际商业机器公司 | 发布-订阅数据处理环境中管理通道所有权的方法和系统 |
CN106547869A (zh) * | 2016-10-25 | 2017-03-29 | 广东亿迅科技有限公司 | 多服务器索引的构建方法及装置 |
CN107748748A (zh) * | 2017-07-06 | 2018-03-02 | 北京川流科技开发中心 | 水利水电技术标准全文检索系统 |
CN108280215A (zh) * | 2018-02-06 | 2018-07-13 | 福建工程学院 | 一种基于Solr的电商索引文件的混合式更新方法 |
CN108427748A (zh) * | 2018-03-12 | 2018-08-21 | 北京奇艺世纪科技有限公司 | 分布式数据库二级索引查询方法、装置以及服务器 |
WO2018233364A1 (zh) * | 2017-06-19 | 2018-12-27 | 华为技术有限公司 | 索引更新方法、系统及相关装置 |
CN110024358A (zh) * | 2016-10-07 | 2019-07-16 | 诺基亚技术有限公司 | 对由分布式数据存储系统提供的服务的访问 |
US10439916B2 (en) | 2015-03-05 | 2019-10-08 | International Business Machines Corporation | Client-side fault tolerance in a publish-subscribe system |
CN110888837A (zh) * | 2019-11-15 | 2020-03-17 | 星辰天合(北京)数据科技有限公司 | 对象存储小文件归并方法及装置 |
US10606839B2 (en) | 2015-10-27 | 2020-03-31 | International Business Machines Corporation | Preventing staleness in query results when using asynchronously updated indexes |
CN111427989A (zh) * | 2019-01-10 | 2020-07-17 | 北大方正集团有限公司 | 一种全文检索的索引处理方法、索引处理系统及存储介质 |
CN112052247A (zh) * | 2020-09-29 | 2020-12-08 | 微医云(杭州)控股有限公司 | 搜索引擎的索引更新系统、方法、装置、电子设备、存储介质 |
CN113254466A (zh) * | 2021-06-18 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、电子设备和存储介质 |
CN113704274A (zh) * | 2020-05-20 | 2021-11-26 | 中国移动通信集团福建有限公司 | 一种数据的读取方法及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100561474C (zh) * | 2006-01-17 | 2009-11-18 | 鸿富锦精密工业(深圳)有限公司 | 远程多点文件索引同步系统及方法 |
CN100401300C (zh) * | 2006-04-29 | 2008-07-09 | 上海世纪互联信息系统有限公司 | 具有自动分类功能的搜索引擎 |
-
2009
- 2009-08-27 CN CN2009101683353A patent/CN101650741B/zh active Active
Cited By (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102004778B (zh) * | 2010-11-19 | 2012-02-29 | 清华大学 | 一种云环境中的文本索引在线更新方法 |
CN102004778A (zh) * | 2010-11-19 | 2011-04-06 | 清华大学 | 一种云环境中的文本索引在线更新方法 |
CN102571710A (zh) * | 2010-12-24 | 2012-07-11 | 中兴通讯股份有限公司 | 信息订阅方法及系统 |
CN102571710B (zh) * | 2010-12-24 | 2019-03-12 | 中兴通讯股份有限公司 | 信息订阅方法及系统 |
CN103051511B (zh) * | 2011-10-11 | 2015-10-07 | 阿里巴巴集团控股有限公司 | 一种消息数据的处理方法及装置 |
CN103051511A (zh) * | 2011-10-11 | 2013-04-17 | 阿里巴巴集团控股有限公司 | 一种消息数据的处理方法及装置 |
CN103186622A (zh) * | 2011-12-30 | 2013-07-03 | 北大方正集团有限公司 | 一种全文检索系统中索引信息的更新方法以及装置 |
CN103186622B (zh) * | 2011-12-30 | 2016-03-30 | 北大方正集团有限公司 | 一种全文检索系统中索引信息的更新方法以及装置 |
CN103379021A (zh) * | 2012-04-24 | 2013-10-30 | 中兴通讯股份有限公司 | 实现分布式消息队列的方法及系统 |
CN103379021B (zh) * | 2012-04-24 | 2017-02-15 | 中兴通讯股份有限公司 | 实现分布式消息队列的方法及系统 |
CN103559301A (zh) * | 2013-11-14 | 2014-02-05 | 华为技术有限公司 | 更新数据的方法、数据库触发器和搜索引擎 |
CN103678577A (zh) * | 2013-12-10 | 2014-03-26 | 新浪网技术(中国)有限公司 | 一种数据更新方法及装置 |
CN103678577B (zh) * | 2013-12-10 | 2017-10-24 | 新浪网技术(中国)有限公司 | 一种数据更新方法及装置 |
CN104750746A (zh) * | 2013-12-30 | 2015-07-01 | 中国移动通信集团上海有限公司 | 业务数据的处理方法、装置及分布式内存数据库系统 |
CN105468641A (zh) * | 2014-09-09 | 2016-04-06 | 上海盛大网络发展有限公司 | 一种搜索云消息实时分发系统及方法 |
CN105468641B (zh) * | 2014-09-09 | 2020-08-18 | 上海盛大网络发展有限公司 | 一种搜索云消息实时分发系统及方法 |
CN104346697A (zh) * | 2014-10-31 | 2015-02-11 | 亚信科技(南京)有限公司 | 一种分级发布产品的方法及系统 |
CN104346697B (zh) * | 2014-10-31 | 2017-12-05 | 亚信科技(南京)有限公司 | 一种分级发布产品的方法及系统 |
CN105939335B (zh) * | 2015-03-05 | 2019-03-22 | 国际商业机器公司 | 发布-订阅数据处理环境中管理通道所有权的方法和系统 |
CN105939335A (zh) * | 2015-03-05 | 2016-09-14 | 国际商业机器公司 | 发布-订阅数据处理环境中管理通道所有权的方法和系统 |
US10439916B2 (en) | 2015-03-05 | 2019-10-08 | International Business Machines Corporation | Client-side fault tolerance in a publish-subscribe system |
US10158697B2 (en) | 2015-03-05 | 2018-12-18 | International Business Machines Corporation | Channel ownership in a publish-subscribe system |
CN105045684B (zh) * | 2015-07-16 | 2018-06-15 | 北京京东尚科信息技术有限公司 | 索引切换和索引控制的方法及装置 |
CN105045684A (zh) * | 2015-07-16 | 2015-11-11 | 北京京东尚科信息技术有限公司 | 索引切换和索引控制的方法及装置 |
CN105208105A (zh) * | 2015-08-26 | 2015-12-30 | 北京奇虎科技有限公司 | 索引更新方法和装置 |
CN105208105B (zh) * | 2015-08-26 | 2019-03-08 | 北京奇虎科技有限公司 | 索引更新方法和装置 |
CN105243099A (zh) * | 2015-09-17 | 2016-01-13 | 成都优译信息技术有限公司 | 一种基于翻译文件的大数据实时存储方法 |
US10614070B2 (en) | 2015-10-27 | 2020-04-07 | International Business Machines Corporation | Preventing staleness in query results when using asynchronously updated indexes |
US10606839B2 (en) | 2015-10-27 | 2020-03-31 | International Business Machines Corporation | Preventing staleness in query results when using asynchronously updated indexes |
US11089104B2 (en) | 2016-10-07 | 2021-08-10 | Nokia Technologies Oy | Access to services provided by a distributed data storage system |
CN110024358A (zh) * | 2016-10-07 | 2019-07-16 | 诺基亚技术有限公司 | 对由分布式数据存储系统提供的服务的访问 |
CN106547869A (zh) * | 2016-10-25 | 2017-03-29 | 广东亿迅科技有限公司 | 多服务器索引的构建方法及装置 |
WO2018233364A1 (zh) * | 2017-06-19 | 2018-12-27 | 华为技术有限公司 | 索引更新方法、系统及相关装置 |
US11308062B2 (en) | 2017-06-19 | 2022-04-19 | Huawei Technologies Co., Ltd. | Index update method and system, and related apparatus |
CN107748748A (zh) * | 2017-07-06 | 2018-03-02 | 北京川流科技开发中心 | 水利水电技术标准全文检索系统 |
CN108280215B (zh) * | 2018-02-06 | 2021-07-30 | 福建工程学院 | 一种基于Solr的电商索引文件的混合式更新方法 |
CN108280215A (zh) * | 2018-02-06 | 2018-07-13 | 福建工程学院 | 一种基于Solr的电商索引文件的混合式更新方法 |
CN108427748A (zh) * | 2018-03-12 | 2018-08-21 | 北京奇艺世纪科技有限公司 | 分布式数据库二级索引查询方法、装置以及服务器 |
CN111427989A (zh) * | 2019-01-10 | 2020-07-17 | 北大方正集团有限公司 | 一种全文检索的索引处理方法、索引处理系统及存储介质 |
CN110888837B (zh) * | 2019-11-15 | 2021-01-22 | 星辰天合(北京)数据科技有限公司 | 对象存储小文件归并方法及装置 |
CN110888837A (zh) * | 2019-11-15 | 2020-03-17 | 星辰天合(北京)数据科技有限公司 | 对象存储小文件归并方法及装置 |
CN113704274A (zh) * | 2020-05-20 | 2021-11-26 | 中国移动通信集团福建有限公司 | 一种数据的读取方法及电子设备 |
CN113704274B (zh) * | 2020-05-20 | 2024-03-19 | 中国移动通信集团福建有限公司 | 一种数据的读取方法及电子设备 |
CN112052247A (zh) * | 2020-09-29 | 2020-12-08 | 微医云(杭州)控股有限公司 | 搜索引擎的索引更新系统、方法、装置、电子设备、存储介质 |
CN112052247B (zh) * | 2020-09-29 | 2024-05-07 | 微医云(杭州)控股有限公司 | 搜索引擎的索引更新系统、方法、装置、电子设备、存储介质 |
CN113254466A (zh) * | 2021-06-18 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101650741B (zh) | 2011-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101650741B (zh) | 一种分布式全文检索的索引实时更新的方法和系统 | |
CN111563102A (zh) | 缓存更新方法、服务器、系统及存储介质 | |
CN102831156A (zh) | 一种云计算平台上的分布式事务处理方法 | |
CN101706781B (zh) | 一种数据库缓存集中管理方法和系统 | |
CA2616194C (en) | Revenue management system and method | |
CN111143382B (zh) | 数据处理方法、系统和计算机可读存储介质 | |
CN103116661A (zh) | 一种数据库的数据处理方法 | |
CN110019469B (zh) | 分布式数据库数据处理方法、装置、存储介质及电子装置 | |
CN102142024A (zh) | 在分布式数据库中使用递增捕捉来进行逻辑数据备份和回退 | |
US20170083535A1 (en) | Managing sequential data store | |
CN102508854A (zh) | 数据访问装置和方法 | |
CN111787055B (zh) | 一种基于Redis且面向事务机制和多数据中心的数据分发方法和系统 | |
US20040107381A1 (en) | High performance transaction storage and retrieval system for commodity computing environments | |
CN109299056B (zh) | 一种基于分布式文件系统的数据同步方法和装置 | |
CN101408889A (zh) | 一种性能监控的方法、装置及系统 | |
CN101930472A (zh) | 一种支持分布式数据库基于并行查询的方法 | |
US20120278817A1 (en) | Event distribution pattern for use with a distributed data grid | |
CN103500120A (zh) | 基于多线程异步双写的分布式缓存高可用处理方法及系统 | |
CN102012933A (zh) | 分布式文件系统及利用其存储数据和提供服务的方法 | |
CN107180113A (zh) | 一种大数据检索平台 | |
CN105243163A (zh) | 历史数据归档集成系统及方法 | |
US20120278429A1 (en) | Cluster system, synchronization controlling method, server, and synchronization controlling program | |
CN111596922A (zh) | 基于redis实现自定义缓存注解的方法 | |
CN110750372B (zh) | 基于共享内存的日志系统及日志管理方法 | |
EP4000034A1 (en) | Distributed streaming system supporting real-time sliding windows |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |