一种全文检索的索引处理方法、索引处理***及存储介质
技术领域
本发明涉及信息处理技术领域,具体而言,涉及一种全文检索的索引处理方法、索引处理***及存储介质。
背景技术
二十一世纪是个信息***的时代,每个实体都在不停地、高速地产生需要存储的数据信息,在待存储的海量数据中,85%是非结构化的。全文检索是一种能够从海量非结构化数据中快速搜索到有用信息的技术,从最初的字符串匹配和简单的布尔逻辑检索技术演进到对超大文本、语音、图像、视频等非结构化数据进行综合管理的复合技术。
目前全文检索的功能已经相当完善,索引文件作为全文检索的最重要的数据单元,索引容错已经成为了越来越多的公司和机构的研究热点。最常用的容错方案是分布式存储分案,其基本原理是将同一份索引数据分布式冗余存储,当任意节点出现故障时,利用其它节点的索引数据进行恢复。该方法可以有效恢复索引错误,但是存在以下弊端:(1)索引数据分布式冗余存储势必增大资源消耗;(2)需要解决索引一致性问题;(3)不支持单节点。
发明内容
本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。
为此,本发明的一个方面在于提出了一种全文检索的索引处理方法。
本发明的另一个方面在于提出了一种全文检索的索引处理***。
本发明的再一个方面在于提出了一种计算机可读存储介质。
有鉴于此,根据本发明的一个方面,提出了一种全文检索的索引处理方法,包括:接收索引请求,解析索引请求获取索引数据和索引数据对应的索引操作的信息;将索引数据和索引操作的信息写入事务日志,并执行索引请求;在索引请求出现执行异常的情况下,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求。
本发明提供的全文检索的索引处理方法,将索引请求中的索引数据和索引操作的信息按照指定格式写入事务日志,然后处理该索引请求。进一步地,当索引请求出现执行异常的情况下,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求。采用本发明的技术方案,利用事务日志记录索引数据和索引操作,当检索节点异常宕机重启后,通过读取事务日志文件,解析出未生效的索引操作和索引数据并重新执行,保证了索引数据的正确性、完整性及一致性,同时也避免了数据冗余,降低了程序的复杂度,提高了***的灵活性。
根据本发明的上述全文检索的索引处理方法,还可以具有以下技术特征:
在上述技术方案中,优选地,还包括:将事务日志存储至磁盘,并将已存储至磁盘的事务日志删除。
在该技术方案中,将事务日志实时刷新到磁盘,确保事务日志能够有效地记录索引操作和索引数据,在运行过程中对事务日志按一定策略淘汰,降低了索引恢复的事务日志处理量。
在上述任一技术方案中,优选地,在索引请求出现执行异常的情况下,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求,具体包括:在索引请求出现执行异常的情况下,记录未生效的索引数据和未生效的索引数据对应的未生效的索引操作的信息;在磁盘中读取事务日志,解析事务日志获取未生效的索引数据和未生效的索引操作的信息,并对未生效的索引数据和未生效的索引操作的信息进行恢复;执行恢复后的索引操作和恢复后的索引数据对应的索引请求。
在该技术方案中,在索引请求出现执行异常的情况下,记录未生效的索引数据和未生效的索引数据对应的未生效的索引操作的信息,在磁盘中读取事务日志,解析事务日志获取未生效的索引数据和未生效的索引操作的信息,并对未生效的索引数据和未生效的索引操作的信息进行恢复,保证索引数据和索引操作能够恢复到程序故障之前,保证了索引数据的正确性、完整性及一致性,进而再次执行索引请求。
在上述任一技术方案中,优选地,执行恢复后的索引操作和恢复后的索引数据对应的索引请求,具体包括:查找恢复后的索引操作和恢复后的索引数据对应的索引请求;当存在一个索引请求时,执行索引请求;当存在至少两个索引请求时,将至少两个索引请求按照预设规则进行合并,并执行合并后的索引请求。
在该技术方案中,若恢复后存在一个索引请求则直接执行该索引请求,若回复后存在多个索引请求则将多个索引请求按照一定规则合并后再执行,可降低***资源消耗。合并的部分原则列举如下:多次更新操作仅执行最新的更新操作、新建加更新则合并为新建操作、存在删除操作且后续未收到新增请求的合并为删除操作。例如,某条索引数据,最后收到的是删除请求,则将该索引数据的所有请求合并为删除请求,直接执行删除请求。
在上述任一技术方案中,优选地,事务日志包括多个文件,多个文件分别存储未执行的索引数据和索引操作、正在执行的索引数据和索引操作,已经执行的索引数据和索引操作。
在该技术方案中,事务日志包括多个文件,每个文件中存储不同执行类型的索引数据和索引操作,由此可进行执行类型区分。
根据本发明的另一个方面,提出了一种全文检索的索引处理***,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序以:接收索引请求,解析索引请求获取索引数据和索引数据对应的索引操作的信息;将索引数据和索引操作的信息写入事务日志,并执行索引请求;当索引请求出现执行异常情况时,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求。
本发明提供的全文检索的索引处理***,将索引请求中的索引数据和索引操作的信息按照指定格式写入事务日志,然后处理该索引请求。进一步地,当索引请求出现执行异常的情况下,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求。采用本发明的技术方案,利用事务日志记录索引数据和索引操作,当检索节点异常宕机重启后,通过读取事务日志文件,解析出未生效的索引操作和索引数据并重新执行,保证了索引数据的正确性、完整性及一致性,同时也避免了数据冗余,降低了程序的复杂度,提高了***的灵活性。
根据本发明的上述全文检索的索引处理***,还可以具有以下技术特征:
在上述技术方案中,优选地,处理器还用于将事务日志存储至磁盘,并将已存储至磁盘的事务日志删除。
在该技术方案中,将事务日志实时刷新到磁盘,确保事务日志能够有效地记录索引操作和索引数据,在运行过程中对事务日志按一定策略淘汰,降低了索引恢复的事务日志处理量。
在上述任一技术方案中,优选地,处理器在索引请求出现执行异常的情况下,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求,具体包括:在索引请求出现执行异常的情况下,记录未生效的索引数据和未生效的索引数据对应的未生效的索引操作的信息;在磁盘中读取事务日志,解析事务日志获取未生效的索引数据和未生效的索引操作的信息,并对未生效的索引数据和未生效的索引操作的信息进行恢复;执行恢复后的索引操作和恢复后的索引数据对应的索引请求。
在该技术方案中,在索引请求出现执行异常的情况下,记录未生效的索引数据和未生效的索引数据对应的未生效的索引操作的信息,在磁盘中读取事务日志,解析事务日志获取未生效的索引数据和未生效的索引操作的信息,并对未生效的索引数据和未生效的索引操作的信息进行恢复,保证索引数据和索引操作能够恢复到程序故障之前,保证了索引数据的正确性、完整性及一致性,进而再次执行索引请求。
在上述任一技术方案中,优选地,处理器执行恢复后的索引操作和恢复后的索引数据对应的索引请求包括:查找恢复后的索引操作和恢复后的索引数据对应的索引请求;当存在一个索引请求时,执行索引请求;当存在至少两个索引请求时,将至少两个索引请求按照预设规则进行合并,并执行合并后的索引请求。
在该技术方案中,若恢复后存在一个索引请求则直接执行该索引请求,若回复后存在多个索引请求则将多个索引请求按照一定规则合并后再执行,可降低***资源消耗。合并的部分原则列举如下:多次更新操作仅执行最新的更新操作、新建加更新则合并为新建操作、存在删除操作且后续未收到新增请求的合并为删除操作。例如,某条索引数据,最后收到的是删除请求,则将该索引数据的所有请求合并为删除请求,直接执行删除请求。
在上述任一技术方案中,优选地,事务日志包括多个文件,多个文件分别存储未执行的索引数据和索引操作、正在执行的索引数据和索引操作,已经执行的索引数据和索引操作。
在该技术方案中,事务日志包括多个文件,每个文件中存储不同执行类型的索引数据和索引操作,由此可进行执行类型区分。
根据本发明的再一个方面,提出了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述任一技术方案的全文检索的索引处理方法的步骤。
本发明提供的计算机可读存储介质,计算机程序被处理器执行时实现如上述任一技术方案的全文检索的索引处理方法的步骤,因此该计算机可读存储介质包括上述任一技术方案的全文检索的索引处理方法的全部有益效果。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了本发明的一个实施例的全文检索的索引处理方法的流程示意图;
图2示出了本发明的另一个实施例的全文检索的索引处理方法的流程示意图;
图3示出了本发明的一个具体实施例的事务日志的记录过程的流程示意图;
图4示出了本发明的一个具体实施例的事务日志的淘汰过程的流程示意图;
图5示出了本发明的一个实施例的全文检索的索引处理***的示意框图;
图6示出了本发明的一个具体实施例的基于事务日志的全文检索索引容错***的示意框图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不限于下面公开的具体实施例的限制。
本发明第一方面的实施例,提出一种全文检索的索引处理方法,图1示出了本发明的一个实施例的全文检索的索引处理方法的流程示意图。其中,该方法包括:
步骤102,接收索引请求,解析索引请求获取索引数据和索引数据对应的索引操作的信息;
步骤104,将索引数据和索引操作的信息写入事务日志,并执行索引请求;
步骤106,在索引请求出现执行异常的情况下,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求。
本发明提供的全文检索的索引处理方法,将索引请求中的索引数据和索引操作的信息按照指定格式写入事务日志,然后处理该索引请求。进一步地,当索引请求出现执行异常的情况下,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求。采用本发明的技术方案,利用事务日志记录索引数据和索引操作,当检索节点异常宕机重启后,通过读取事务日志文件,解析出未生效的索引操作和索引数据并重新执行,保证了索引数据的正确性、完整性及一致性,同时也避免了数据冗余,降低了程序的复杂度,提高了***的灵活性。
可选地,步骤106,在索引请求出现执行异常的情况下,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求,具体包括:在索引请求出现执行异常的情况下,记录未生效的索引数据和未生效的索引数据对应的未生效的索引操作的信息;在磁盘中读取事务日志,解析事务日志获取未生效的索引数据和未生效的索引操作的信息,并对未生效的索引数据和未生效的索引操作的信息进行恢复;执行恢复后的索引操作和恢复后的索引数据对应的索引请求。
在该实施例中,在索引请求出现执行异常的情况下,记录未生效的索引数据和未生效的索引数据对应的未生效的索引操作的信息,在磁盘中读取事务日志,解析事务日志获取未生效的索引数据和未生效的索引操作的信息,并对未生效的索引数据和未生效的索引操作的信息进行恢复,保证索引数据和索引操作能够恢复到程序故障之前,保证了索引数据的正确性、完整性及一致性,进而再次执行索引请求。
可选地,执行恢复后的索引操作和恢复后的索引数据对应的索引请求,具体包括:查找恢复后的索引操作和恢复后的索引数据对应的索引请求;当存在一个索引请求时,执行索引请求;当存在至少两个索引请求时,将至少两个索引请求按照预设规则进行合并,并执行合并后的索引请求。
在该实施例中,若恢复后存在一个索引请求则直接执行该索引请求,若回复后存在多个索引请求则将多个索引请求按照一定规则合并后再执行,可降低***资源消耗。合并的部分原则列举如下:多次更新操作仅执行最新的更新操作、新建加更新则合并为新建操作、存在删除操作且后续未收到新增请求的合并为删除操作。例如,某条索引数据,最后收到的是删除请求,则将该索引数据的所有请求合并为删除请求,直接执行删除请求。
可选地,事务日志包括多个文件,多个文件分别存储未执行的索引数据和索引操作、正在执行的索引数据和索引操作,已经执行的索引数据和索引操作。
在该实施例中,事务日志包括多个文件,每个文件中存储不同执行类型的索引数据和索引操作,由此可进行执行类型区分。
图2示出了本发明的另一个实施例的全文检索的索引处理方法的流程示意图。其中,该方法包括:
步骤202,接收索引请求,解析索引请求获取索引数据和索引数据对应的索引操作的信息;
步骤204,将索引数据和索引操作的信息写入事务日志,并执行索引请求;
步骤206,将事务日志存储至磁盘,并将已存储至磁盘的事务日志删除;
步骤208,在索引请求出现执行异常的情况下,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求。
在该实施例中,将事务日志实时刷新到磁盘,确保事务日志能够有效地记录索引操作和索引数据,在运行过程中对事务日志按一定策略淘汰,降低了索引恢复的事务日志处理量。
可选地,步骤208,在索引请求出现执行异常的情况下,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求,具体包括:在索引请求出现执行异常的情况下,记录未生效的索引数据和未生效的索引数据对应的未生效的索引操作的信息;在磁盘中读取事务日志,解析事务日志获取未生效的索引数据和未生效的索引操作的信息,并对未生效的索引数据和未生效的索引操作的信息进行恢复;执行恢复后的索引操作和恢复后的索引数据对应的索引请求。
可选地,执行恢复后的索引操作和恢复后的索引数据对应的索引请求,具体包括:查找恢复后的索引操作和恢复后的索引数据对应的索引请求;当存在一个索引请求时,执行索引请求;当存在至少两个索引请求时,将至少两个索引请求按照预设规则进行合并,并执行合并后的索引请求。
可选地,事务日志包括多个文件,多个文件分别存储未执行的索引数据和索引操作、正在执行的索引数据和索引操作,已经执行的索引数据和索引操作。
本发明的具体实施例中,提出了一种基于事务日志的全文检索索引容错方法,利用事务日志记录索引相关操作,并实时将事务日志刷新到磁盘,在程序异常宕机重启后通过读取事务日志对索引进行还原,保证了索引数据的正确性、完整性及一致性,同时节省了***的存储资源、降低了索引容错的复杂度、提高了***的灵活性。
事务日志记录了索引新建、更新、删除的操作,记录的信息包括操作类型、操作数据、请求时间等信息,其中新建和更新操作的数据包含索引的原始数据的所有字段,删除操作的数据为待删除数据的主键信息。事务日志记录过程如图3所示,具体步骤包括:
步骤302,服务端接收应用端发送的请求和相关数据;
步骤304,将对应操作及数据按照指定格式写入事务日志;
步骤306,生成可执行任务并加入任务队列,然后处理该请求。
磁盘可保存3个事务日志文件,分别记录最新接收的请求、正在执行中的请求、已经被执行的请求。事务日志文件的淘汰过程如图4所示,具体步骤包括:
步骤402,执行索引任务;
步骤404,是否需要持久化索引数据,当是时进入步骤406,否则返回步骤402;
步骤406,进行索引数据文件持久化;
步骤408,删除index.is2文件;
步骤410,重命名index.is0文件和index.is1文件;
步骤412,新建index.is0文件。
节点在运行中周期性的执行索引持久化操作,将当前已经执行完毕的操作持久化到磁盘索引,同时删除index.is2文件,重命名index.is0文件和index.is1文件分别为index.is1文件、index.is2文件,并创建index.is0文件,用于记录最新的请求。
检索节点宕机重启后,首先读取事务日志,从中解析出所有可能未持久化的索引操作,并按照时间的先后顺序对同一条数据的操作请求合并。合并的部分原则列举如下:多次更新操作仅执行最新的更新操作、新建加更新则合并为新建操作、存在删除操作且后续未收到新增请求的合并为删除操作。
在执行合并后的索引操作过程中,节点状态处于恢复状态。在此恢复状态下,拒绝执行所有来自应用端的修改索引请求,仅提供检索服务。在索引修复完成后,节点取消恢复状态,并对外开放索引新建、更新、删除服务。
本发明第二方面的实施例,提出一种全文检索的索引处理***,图5示出了本发明的一个实施例的全文检索的索引处理***50的示意框图。其中,该***50包括:
存储器502,用于存储计算机程序;
处理器504,用于执行计算机程序以:接收索引请求,解析索引请求获取索引数据和索引数据对应的索引操作的信息;将索引数据和索引操作的信息写入事务日志,并执行索引请求;当索引请求出现执行异常情况时,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求。
本发明提供的全文检索的索引处理***50,将索引请求中的索引数据和索引操作的信息按照指定格式写入事务日志,然后处理该索引请求。进一步地,当索引请求出现执行异常的情况下,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求。采用本发明的技术方案,利用事务日志记录索引数据和索引操作,当检索节点异常宕机重启后,通过读取事务日志文件,解析出未生效的索引操作和索引数据并重新执行,保证了索引数据的正确性、完整性及一致性,同时也避免了数据冗余,降低了程序的复杂度,提高了***的灵活性。
可选地,处理器504还用于将事务日志存储至磁盘,并将已存储至磁盘的事务日志删除。
在该实施例中,将事务日志实时刷新到磁盘,确保事务日志能够有效地记录索引操作和索引数据,在运行过程中对事务日志按一定策略淘汰,降低了索引恢复的事务日志处理量。
可选地,处理器504在索引请求出现执行异常的情况下,从事务日志中获取索引数据和索引操作的信息,并重新执行索引请求,具体包括:在索引请求出现执行异常的情况下,记录未生效的索引数据和未生效的索引数据对应的未生效的索引操作的信息;在磁盘中读取事务日志,解析事务日志获取未生效的索引数据和未生效的索引操作的信息,并对未生效的索引数据和未生效的索引操作的信息进行恢复;执行恢复后的索引操作和恢复后的索引数据对应的索引请求。
在该实施例中,在索引请求出现执行异常的情况下,记录未生效的索引数据和未生效的索引数据对应的未生效的索引操作的信息,在磁盘中读取事务日志,解析事务日志获取未生效的索引数据和未生效的索引操作的信息,并对未生效的索引数据和未生效的索引操作的信息进行恢复,保证索引数据和索引操作能够恢复到程序故障之前,保证了索引数据的正确性、完整性及一致性,进而再次执行索引请求。
可选地,处理器504执行恢复后的索引操作和恢复后的索引数据对应的索引请求包括:查找恢复后的索引操作和恢复后的索引数据对应的索引请求;当存在一个索引请求时,执行索引请求;当存在至少两个索引请求时,将至少两个索引请求按照预设规则进行合并,并执行合并后的索引请求。
在该实施例中,若恢复后存在一个索引请求则直接执行该索引请求,若回复后存在多个索引请求则将多个索引请求按照一定规则合并后再执行,可降低***资源消耗。合并的部分原则列举如下:多次更新操作仅执行最新的更新操作、新建加更新则合并为新建操作、存在删除操作且后续未收到新增请求的合并为删除操作。例如,某条索引数据,最后收到的是删除请求,则将该索引数据的所有请求合并为删除请求,直接执行删除请求。
可选地,事务日志包括多个文件,多个文件分别存储未执行的索引数据和索引操作、正在执行的索引数据和索引操作,已经执行的索引数据和索引操作。
在该实施例中,事务日志包括多个文件,每个文件中存储不同执行类型的索引数据和索引操作,由此可进行执行类型区分。
本发明的具体实施例中,提出一种基于事务日志的全文检索索引容错***,利用事务日志记录索引相关的操作,并将事务日志实时刷新到磁盘,在运行过程中对事务日志按一定策略淘汰,确保事务日志能够有效记录未持久化的索引操作,同时也避免了数据冗余。当检索节点异常宕机重启后,通过读取事务日志文件,解析出未生效的操作和数据并重新执行,保证了索引数据的正确性、完整性及一致性,降低了程序的复杂度。如图6所示,基于事务日志的全文检索索引容错***60主要包括事务日志生成与管理模块602和索引容错恢复模块604。
所述事务日志生成与管理模块602包括以下工作过程:
(1)事务日志记录过程,应用端发送请求和相关数据至服务端,服务端接收请求并解析,将对应操作及数据按照指定格式写入事务日志,然后处理该请求。其中,事务日志有多个文件,每个文件记录一个持久化周期内的请求。
(2)事务日志淘汰过程,程序在运行中按照一定策略将索引持久化到磁盘,在索引持久化完成后,淘汰所有操作均已持久化到磁盘的事务日志文件,确保事务日志能够高效记录未持久化的索引操作,同时降低了索引恢复的事务日志处理量。
所述索引容错恢复模块604包括以下工作过程:
(1)事务日志解析过程,读取事务日志并按照一定格式解析,得到可能未持久化的索引操作,等待后续处理。
(2)索引操作合并过程,对于从事务日志中恢复的索引操作请求,如果同一条数据有多个请求,则对所有请求按照一定规则进行合并。合并的部分原则列举如下:多次更新操作仅执行最新的更新操作、新建加更新则合并为新建操作、存在删除操作且后续未收到新增请求的合并为删除操作。例如,某条数据,最后收到的是删除请求,则将该数据的所有请求合并为删除请求。
(3)索引修复过程,执行合并后的请求,保证索引数据能够恢复到程序故障之前。
本发明第三方面的实施例,提出了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述任一实施例的全文检索的索引处理方法的步骤。
本发明提供的计算机可读存储介质,计算机程序被处理器执行时实现如上述任一实施例的全文检索的索引处理方法的步骤,因此该计算机可读存储介质包括上述任一实施例的全文检索的索引处理方法的全部有益效果。
在本说明书的描述中,术语“第一”、“第二”仅用于描述的目的,而不能理解为指示或暗示相对重要性,除非另有明确的规定和限定;术语“连接”、“安装”、“固定”等均应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本说明书的描述中,术语“一个实施例”、“一些实施例”、“具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或实例。而且,描述的具体特征、结构、材料或特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。