全文检索方法和全文检索装置与流程

文档序号:16263408发布日期:2018-12-14 21:45阅读:217来源:国知局
全文检索方法和全文检索装置与流程

本发明涉及全文检索技术领域,具体而言,涉及一种全文检索方法和一种全文检索装置。

背景技术

相关技术中,信息数据中海量的非机构化数据进行处理时,需要使用全文检索技术,该技术首先对非结构化数据进行处理,使其变得有一定结构并对其保存,搜索过程类似字典查字过程,针对关键词进行查找。全文检索支持的常用功能有单库检索、多库检索、统计检索、排序检索、消重检索、精确检索等。全文检索系统的按域统计和按域排序功能,依赖文档对应域的域值信息,为了保证速度,避免频繁的读取磁盘文件,全文检索系统通常将过程中使用到的数据预加载至系统内存中,若要对多个域支持按域统计或排序,需要将每一个域的数据均预加载至全文检索系统内存中,上述技术方案存在以下弊端:

(1)随着支持的域的个数的增加,全文检索的内存消耗不断上涨,增加系统压力。

(2)对于有更新需求的域,由于全文检索基于倒排索引的检索结构,需标记旧数据并删除,然后为待更新数据新建索引,进而导致更新速度慢;每一次更新往往只涉及数据当中的有限部分,并不需要重建索引,系统资源浪费严重;索引更新过程需要复杂的线程同步策略,使得程序设计复杂化。

(3)需要增加或删除对特定域的按域统计或排序支持时,必须删除所有索引重建,浪费系统资源,系统可扩展性差。



技术实现要素:

本发明正是基于上述技术问题至少之一,提出了一种新的全文检索技术方案,在将存储域的数据导入至各个内存的内存数据库时,通过生成每个内存数据库对应的一个索引库,同时将存储域写入对应的索引库,在全文检索过程中,缓解了系统的内存压力,节省了系统资源,提高了索引更新速度,降低了程序设计的复杂度,增强了系统的可扩展性。

有鉴于此,本发明提出了一种全文检索方法,包括:在将存储域的数据导入至各个内存的内存数据库时,每个内存数据库对应的一个索引库;将每个内存数据库中导入数据的存储域写入对应的索引库,其中,索引库中存储有数据的索引。

在该技术方案中,在将存储域的数据导入至各个内存的内存数据库时,通过生成每个内存数据库对应的一个索引库,同时将存储域写入对应的索引库,在全文检索过程中:当需要增加或删除特定存储域的数据时,仅在内存数据库中进行操作,不再需要反复的索引重建,增强了全文检索系统的可扩展性;当存储域的数据需要更新时,节省了全文检索系统的系统资源且降低了程序设计的复杂程度;当执行按域统计和排序检索时,通过调用内存数据库接口获取指定文档特定存储域的数据,实现全文检索系统的按域统计和排序功能。

其中,索引库中存储有数据的索引,并且索引与存储域的数据具有一一对应关系,存储域的数据更新的实现一般由删除和增加操作联合完成,存储域的数据导入过程中,暂停执行涉及到使用内存数据库中存储域的数据的检索请求。

在上述技术方案中,优选地,在将存储域的数据导入至内存数据库时,对已导入数据执行上载操作,以获取对应的文档文件;对文档文件创建索引,并解析文档文件的标识信息;判断文档文件的标识信息是否与索引库中的任一预存标识信息匹配;在判定文档文件的标识信息不与索引库中的任一预存标识信息匹配时,将文档文件的标识信息写入对应的索引库。

在该技术方案中,在将存储域的数据导入至内存数据库时,对已导入数据执行上载操作,以获取存储域的数据对应的文档文件,并对文档文件创建索引,同时解析文档文件的包含有导入记录信息的标识信息,为避免在索引库重复写入,需要对文档文件的标识信息与索引库中的任一预存标识信息进行匹配,在判定文档文件的标识信息不与索引库中的任一预存标识信息匹配时,再将文档文件的标识信息写入对应的索引库,提高了全文索引的准确性。

在上述任一项技术方案中,优选地,还包括:在将存储域的数据导入至内存数据库时,若检测到索引的数量大于预设数量,则创建导入任务进程以批量导入存储域的数据。

在该技术方案中,在将存储域的数据导入至内存数据库时,通过检测索引的数量与预设数量匹配,在判定索引的数量大于预设数量时,需要导入和新写入索引对应的存储域的数据,创建导入任务进程,调用内存数据库的接口,以批量导入存储域的数据,实现了存储域的数据的批量增加,不需要反复的重建索引,节省了全文检索系统的系统资源且降低了程序设计的复杂程度。

在上述任一项技术方案中,优选地,还包括:在检测到任一索引被删除时,创建删除任务进程,以将被删除索引对应的已导入数据删除。

在该技术方案中,通过遍历索引库中的索引,当检测到任一索引被删除时,创建删除任务进程,调用内存数据库的接口,以将被删除索引对应的已导入数据删除,实现了同步删除存储域的数据,且仅在内存数据库中进行操作,也不再需要反复的索引重建,增强了全文检索系统的可扩展性。

在上述任一项技术方案中,优选地,还包括:在根据标识信息确定存储域的数据为初次导入时,不对已导入数据的执行上载操作。

在该技术方案中,考虑到在全文检索服务器启动时,需要将存储域的数据导入内存数据库中,该过程需要一定时间且会创建大量任务包在任务队列中,为减轻系统压力,通过对包含有导入记录信息的标识信息进行检测,确定存储域的数据为初次导入时系统不同时上载数据。

根据本发明第二方面,还提出了一种全文检索装置,包括:生成单元,用于在将存储域的数据导入至各个内存的内存数据库时,生成每个内存数据库对应的一个索引库;写入单元,用于将每个内存数据库中导入数据的存储域写入对应的索引库,其中,索引库中存储有数据的索引。

在该技术方案中,在将存储域的数据导入至各个内存的内存数据库时,通过生成每个内存数据库对应的一个索引库,同时将存储域写入对应的索引库,在全文检索过程中:当需要增加或删除特定存储域的数据时,仅在内存数据库中进行操作,不再需要反复的索引重建,增强了全文检索系统的可扩展性;当存储域的数据需要更新时,节省了全文检索系统的系统资源且降低了程序设计的复杂程度;当执行按域统计和排序检索时,通过调用内存数据库接口获取指定文档特定存储域的数据,实现全文检索系统的按域统计和排序功能。

其中,索引库中存储有数据的索引,并且索引与存储域的数据具有一一对应关系,存储域的数据更新的实现一般由删除和增加操作联合完成,存储域的数据导入过程中,暂停执行涉及到使用内存数据库中存储域的数据的检索请求。

在上述技术方案中,优选地,生成单元还包括:上载子单元,用于在将存储域的数据导入至内存数据库时,对已导入数据执行上载操作,以获取对应的文档文件;创建子单元,用于对文档文件创建索引,并解析文档文件的标识信息;判断子单元,用于判断文档文件的标识信息是否与索引库中的任一预存标识信息匹配;写入单元还用于:在判定文档文件的标识信息不与索引库中的任一预存标识信息匹配时,将文档文件的标识信息写入对应的索引库。

在该技术方案中,在将存储域的数据导入至内存数据库时,对已导入数据执行上载操作,以获取存储域的数据对应的文档文件,并对文档文件创建索引,同时解析文档文件的包含有导入记录信息的标识信息,为避免在索引库重复写入,需要对文档文件的标识信息与索引库中的任一预存标识信息进行匹配,在判定文档文件的标识信息不与索引库中的任一预存标识信息匹配时,再将文档文件的标识信息写入对应的索引库,提高了全文索引的准确性。

在上述任一项技术方案中,优选地,创建子单元还用于:在将存储域的数据导入至内存数据库时,若检测到索引的数量大于预设数量,则创建导入任务进程以批量导入存储域的数据。

在该技术方案中,在将存储域的数据导入至内存数据库时,通过检测索引的数量与预设数量匹配,在判定索引的数量大于预设数量时,需要导入和新写入索引对应的存储域的数据,创建导入任务进程,调用内存数据库的接口,以批量导入存储域的数据,实现了存储域的数据的批量增加,不需要反复的重建索引,节省了全文检索系统的系统资源且降低了程序设计的复杂程度。

在上述任一项技术方案中,优选地,创建子单元还用于:在检测到任一索引被删除时,创建删除任务进程,以将被删除索引对应的已导入数据删除。

在该技术方案中,通过遍历索引库中的索引,当检测到任一索引被删除时,创建删除任务进程,调用内存数据库的接口,以将被删除索引对应的已导入数据删除,实现了同步删除存储域的数据,且仅在内存数据库中进行操作,也不再需要反复的索引重建,增强了全文检索系统的可扩展性。

在上述任一项技术方案中,优选地,还包括:上载子单元还用于:在根据标识信息确定存储域的数据为初次导入时,不对已导入数据的执行上载操作。

在该技术方案中,考虑到在全文检索服务器启动时,需要将存储域的数据导入内存数据库中,该过程需要一定时间且会创建大量任务包在任务队列中,为减轻系统压力,通过对包含有导入记录信息的标识信息进行检测,确定存储域的数据为初次导入时系统不同时上载数据。

通过以上技术方案,在全文检索过程中,缓解了系统的内存压力,节省了系统资源,提高了索引更新速度,降低了程序设计的复杂度,增强了系统的可扩展性。

附图说明

图1示出了根据本发明一个实施例的全文检索方法的示意流程图;

图2示出了根据本发明又一个实施例的全文检索方法的示意流程图;

图3示出了根据本发明一个实施例的全文检索装置的示意框图;

图4示出了根据本发明一个实施例的全文检索方法的内存数据库特定域的数据导入过程的示意流程图;

图5示出了根据本发明的实施例的全文检索方法的统计和排序检索过程的示意流程图;

图6示出了根据本发明的实施例的全文检索方法的内存数据库增加特定域的数据过程的示意流程图;

图7示出了根据本发明的实施例的全文检索方法的内存数据库更新特定域的数据过程的示意流程图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用第三方不同于在此描述的第三方方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

图1示出了根据本发明一个实施例的全文检索方法的示意流程图。

如图1所示,根据本发明一个实施例的全文检索方法,包括:步骤102,在将存储域的数据导入至各个内存的内存数据库时,每个内存数据库对应的一个索引库;步骤104,将每个内存数据库中导入数据的存储域写入对应的索引库。

在该实施例中,在将存储域的数据导入至各个内存的内存数据库时,通过生成每个内存数据库对应的一个索引库,同时将存储域写入对应的索引库,在全文检索过程中:当需要增加或删除特定存储域的数据时,仅在内存数据库中进行操作,不再需要反复的索引重建,增强了全文检索系统的可扩展性;当存储域的数据需要更新时,节省了全文检索系统的系统资源且降低了程序设计的复杂程度;当执行按域统计和排序检索时,通过调用内存数据库接口获取指定文档特定存储域的数据,实现全文检索系统的按域统计和排序功能。

其中,索引库中存储有数据的索引,并且索引与存储域的数据具有一一对应关系,存储域的数据更新的实现一般由删除和增加操作联合完成,存储域的数据导入过程中,暂停执行涉及到使用内存数据库中存储域的数据的检索请求。

图2示出了根据本发明又一个实施例的全文检索方法的示意流程图。

如图2所示,根据本发明又一个实施例的全文检索方法,包括:步骤1022,在将存储域的数据导入至内存数据库时,对已导入数据执行上载操作,以获取对应的文档文件;步骤1024,对文档文件创建索引,并解析文档文件的标识信息;步骤1026,判断文档文件的标识信息是否与索引库中的任一预存标识信息匹配;步骤1028,在判定文档文件的标识信息不与索引库中的任一预存标识信息匹配时,将文档文件的标识信息写入对应的索引库。

在该实施例中,在将存储域的数据导入至内存数据库时,对已导入数据执行上载操作,以获取存储域的数据对应的文档文件,并对文档文件创建索引,同时解析文档文件的包含有导入记录信息的标识信息,为避免在索引库重复写入,需要对文档文件的标识信息与索引库中的任一预存标识信息进行匹配,在判定文档文件的标识信息不与索引库中的任一预存标识信息匹配时,再将文档文件的标识信息写入对应的索引库,提高了全文索引的准确性。

在上述任一实施例中,优选地,还包括:在将存储域的数据导入至内存数据库时,若检测到索引的数量大于预设数量,则创建导入任务进程以批量导入存储域的数据。

在该实施例中,在将存储域的数据导入至内存数据库时,通过检测索引的数量与预设数量匹配,在判定索引的数量大于预设数量时,需要导入和新写入索引对应的存储域的数据,创建导入任务进程,调用内存数据库的接口,以批量导入存储域的数据,实现了存储域的数据的批量增加,不需要反复的重建索引,节省了全文检索系统的系统资源且降低了程序设计的复杂程度。

在上述任一实施例中,优选地,还包括:在检测到任一索引被删除时,创建删除任务进程,以将被删除索引对应的已导入数据删除。

在该实施例中,通过遍历索引库中的索引,当检测到任一索引被删除时,创建删除任务进程,调用内存数据库的接口,以将被删除索引对应的已导入数据删除,实现了同步删除存储域的数据,且仅在内存数据库中进行操作,也不再需要反复的索引重建,增强了全文检索系统的可扩展性。

在上述任一实施例中,优选地,还包括:在根据标识信息确定存储域的数据为初次导入时,不对已导入数据的执行上载操作。

在该实施例中,考虑到在全文检索服务器启动时,需要将存储域的数据导入内存数据库中,该过程需要一定时间且会创建大量任务包在任务队列中,为减轻系统压力,通过对包含有导入记录信息的标识信息进行检测,确定存储域的数据为初次导入时系统不同时上载数据。

图3示出了根据本发明一个实施例的全文检索装置的示意框图。

如图3所示,根据本发明一个实施例的全文检索装置300,包括:生成单元302,用于在将存储域的数据导入至各个内存的内存数据库时,生成每个内存数据库对应的一个索引库;写入单元304,用于将每个内存数据库中导入数据的存储域写入对应的索引库,其中,索引库中存储有数据的索引。

在该实施例中,在将存储域的数据导入至各个内存的内存数据库时,通过生成每个内存数据库对应的一个索引库,同时将存储域写入对应的索引库,在全文检索过程中:当需要增加或删除特定存储域的数据时,仅在内存数据库中进行操作,不再需要反复的索引重建,增强了全文检索系统的可扩展性;当存储域的数据需要更新时,节省了全文检索系统的系统资源且降低了程序设计的复杂程度;当执行按域统计和排序检索时,通过调用内存数据库接口获取指定文档特定存储域的数据,实现全文检索系统的按域统计和排序功能。

其中,索引库中存储有数据的索引,并且索引与存储域的数据具有一一对应关系,存储域的数据更新的实现一般由删除和增加操作联合完成,存储域的数据导入过程中,暂停执行涉及到使用内存数据库中存储域的数据的检索请求。

在上述实施例中,优选地,生成单元302还包括:上载子单元3022,用于在将存储域的数据导入至内存数据库时,对已导入数据执行上载操作,以获取对应的文档文件;创建子单元3024,用于对文档文件创建索引,并解析文档文件的标识信息;判断子单元3026,用于判断文档文件的标识信息是否与索引库中的任一预存标识信息匹配;写入单元304还用于:在判定文档文件的标识信息不与索引库中的任一预存标识信息匹配时,将文档文件的标识信息写入对应的索引库。

在该实施例中,在将存储域的数据导入至内存数据库时,对已导入数据执行上载操作,以获取存储域的数据对应的文档文件,并对文档文件创建索引,同时解析文档文件的包含有导入记录信息的标识信息,为避免在索引库重复写入,需要对文档文件的标识信息与索引库中的任一预存标识信息进行匹配,在判定文档文件的标识信息不与索引库中的任一预存标识信息匹配时,再将文档文件的标识信息写入对应的索引库,提高了全文索引的准确性。

在上述任一实施例中,优选地,创建子单元3024还用于:在将存储域的数据导入至内存数据库时,若检测到索引的数量大于预设数量,则创建导入任务进程以批量导入存储域的数据。

在该实施例中,在将存储域的数据导入至内存数据库时,通过检测索引的数量与预设数量匹配,在判定索引的数量大于预设数量时,需要导入和新写入索引对应的存储域的数据,创建导入任务进程,调用内存数据库的接口,以批量导入存储域的数据,实现了存储域的数据的批量增加,不需要反复的重建索引,节省了全文检索系统的系统资源且降低了程序设计的复杂程度。

在上述任一实施例中,优选地,创建子单元3024还用于:在检测到任一索引被删除时,创建删除任务进程,以将被删除索引对应的已导入数据删除。

在该实施例中,通过遍历索引库中的索引,当检测到任一索引被删除时,创建删除任务进程,调用内存数据库的接口,以将被删除索引对应的已导入数据删除,实现了同步删除存储域的数据,且仅在内存数据库中进行操作,也不再需要反复的索引重建,增强了全文检索系统的可扩展性。

在上述任一实施例中,优选地,上载子单元3022还用于:在根据标识信息确定存储域的数据为初次导入时,不对已导入数据的执行上载操作。

在该实施例中,考虑到在全文检索服务器启动时,需要将存储域的数据导入内存数据库中,该过程需要一定时间且会创建大量任务包在任务队列中,为减轻系统压力,通过对包含有导入记录信息的标识信息进行检测,确定存储域的数据为初次导入时系统不同时上载数据。

图4示出了根据本发明一个实施例的全文检索方法的内存数据库特定域的数据导入过程的示意流程图。

如图4所示,根据本发明一个实施例的全文检索方法的内存数据库特定域的数据导入过程,包括:步骤402,读取一个域名;步骤404,判断是否是第一次导入,若是,则执行步骤406,若否,则执行步骤408;步骤406,文档id与该域一起导入;步骤408,导入一个列;步骤410,判断是否有域待导入,若是,则执行步骤402,若否,则执行步骤412;步骤412,记录导入成功文件;步骤414,保存已导入字段信息。

在该实施例中,首先读取待导入特定域的域名,判断是否是第一次导入,若是第一次导入时,则将文档id和域值一起导入,若不是第一次导入时,则只导入一列并保存该域信息,再逐段扫描将域值写入对应文档id所在的行,直至导入所有的存储域信息,并生成导入成功的标志文件,保存已导入字段信息。特定域的数据导入过程中,暂停执行涉及到使用内存数据库中存储域的数据的检索请求,并返回对应错误码。

图5示出了根据本发明的实施例的全文检索方法的统计和排序检索过程的示意流程图。

如图5所示,根据本发明的实施例的全文检索方法的统计和排序检索过程,包括:步骤502,用户发出检索请求;步骤504,控制节点解析请求;步骤506,多库拆分;步骤508,向检索节点发送请求;步骤510,检索节点解析请求;步骤512,查询结果;步骤514,查询内存数据库,统计或排序;步骤516,向控制节点返回结果;步骤518,等待所以检索节点返回结果;步骤520,结果归并,构造返回消息;步骤522,向用户返回结果。

在该实施例中,用户发出检索请求后,控制节点解析检索请求,数据库进行拆分,控制节点向检索节点发送请求,检索节点接收请求并解析,并收集文档,然后判断检索类型是否为统计或排序检索,若为按域统计,则从内存数据库中查询所收集文档对应存储域的值,并按域值进行分组统计;若为按域排序检索,则从内存数据库中查询对应存储域的值,并按域值的排序规则(由应用端指定)进行排序,上述过程完成后,将结果返回控制节点,控制节点对所有检索节点的返回结果归并形成统一结果,返回给用户。

其中,检索节点以客户端/服务器的模式连接内存数据库,内存数据库服务器为全文检索配置一个统一的数据库,不同的检索节点对应数据库服务器中的一个表,检索节点在连接内存数据库时,使用连接池建立多个连接,以增加全文检索的效率。

图6示出了根据本发明的实施例的全文检索方法的内存数据库增加特定域的数据过程的示意流程图。

如图6所示,根据本发明的实施例的全文检索方法的内存数据库增加特定域的数据过程,包括:步骤602,上载文档;步骤604,发起任务;步骤606,创建任务分配线程;步骤608,创建任务处理线程。

在该实施例中,内存数据库增加特定域的数据时,接收到上载的数据后,对其建立索引,新建索引累积到一定数量时,为这些数据创建任务,交给任务分配线程处理,分配给任务处理线程实现存储域的数据在内存数据库中的批量增加。

特别地,全文检索服务器启动时,可能需要将数据导入内存数据库中,过程将非常耗时,为了避免创建索引产生的大量任务包阻塞任务队列,禁止系统在首次导入数据时上载数据。

图7示出了根据本发明的实施例的全文检索方法的内存数据库更新特定域的数据过程的示意流程图。

如图7所示,根据本发明的实施例的全文检索方法的内存数据库更新特定域的数据过程,包括:步骤702,获得需要更新的文档;步骤704,提取需要更新的存储域值;步骤706,生成数据更新任务;步骤708,放入任务队列中进行更新操作。

在该实施例中,对于需要更新的存储域的数据,如访问数、评论数等,将这些字段的变化值直接更新到内存数据库中,首先获得需要更新的文档,然后提取需要更新的存储域值,并生成更新任务放至任务队列,存储域的数据更新的实现由删除和新增两步联合完成此处不再赘述。

以上结合附图详细说明了本发明的技术方案,在将存储域的数据导入至各个内存的内存数据库时,通过生成每个内存数据库对应的一个索引库,同时将存储域写入对应的索引库,在全文检索过程中:当存储域的数据需要更新时,不再需要反复的索引重建,节省了全文检索系统的系统资源且降低了程序设计的复杂程度;当需要增加或删除特定存储域的数据时,仅在内存数据库中进行操作,也不再需要反复的索引重建,增强了全文检索系统的可扩展性;当执行统计和排序检索时,通过调用内存数据库接口获取指定文档特定存储域的数据,实现全文检索系统的统计和排序功能。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1