一种全文索引数据的创建方法及装置与流程

文档序号:12464987阅读:190来源:国知局
一种全文索引数据的创建方法及装置与流程

本发明属于数据检索领域,尤其是涉及一种全文索引数据的创建方法及装置。



背景技术:

在关系数据库系统里,全文索引是检索文档数据最有效率的方式之一,在当前的网络环境下,信息量和用户量都成爆炸性的增长,全文索引成为信息检索系统的主要手段之一,倒排索引是全文检索系统的核心部分,其创建效率对全文检索系统应用也有很大的影响。

倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。

全文索引倒排文档数据是由Term ID对应的一组文档编号和在文档中的偏移组成,其表现形式为Term ID(词条编号)-->{<doc ID(文档编号),{offset}(偏移量)},其中Term ID是断词器划分的最小索引单元,在中文全文检索中一般为字、词、英文、数字串和几种形式的组合,数据创建过程具有以下特点:随着文档数量以及单文档数据量的增加,文档的索引的压力会集中在索引流程的分词等复杂环节,导致索引数据的效率下降,无法有效的利用CPU的计算能力。



技术实现要素:

有鉴于此,本发明实施例提供了一种全文索引数据的创建方法及装置,以解决现有技术中索引数据的效率下降的技术问题。

一方面,本发明实施例提供了一种全文索引数据的创建方法,包括:

并行对文档进行拆分为单词,记录单词位置和单词标记;

按照用于记录单词位置和单词标记的存储数据块顺序对所述存储数据块依次进行封装,生成索引任务;

根据所述索引任务对单词进行排序;

对所述索引任务进行拆包,对相同的单词进行归类。

进一步的,在并行对文档进行拆分为单词之前,还包括:

对待索引文档进行编号,并根据所述编号和文档内容生成数据项;

将所述数据项填入预设大小的内存块中。

进一步的,所述根据所述索引任务对单词进行排序,包括:

对单词按照单词标记递增排序。

进一步的,所述对单词按照单词标记递增排序,包括:

在单词标记相同时,对所述单词按照文本编号标记递增排序。

更进一步的,在对相同的单词进行归类之后,还包括:

按照所述分类对单词进行封装,生成封装数据包,所述封装数据包包括:单词标记和所述单词标记对应的位置信息数据,所述位置信息数据采用分别差分方式进行存储。

另一方面,本发明实施例还提供了一种全文索引数据的创建装置,包括:

分词单元,用于并行对文档进行分词,记录单词位置和单词标记;

封装单元,用于按照用于记录单词位置和单词标记的存储数据块顺序对所述分词的结果依次进行封装,生成封装块和封装块的索引,所述索引包括:词编号及数量;

排序单元,用于根据所述索引对单词进行排序;

归类单元,用于对所述封装块进行拆包,对相同的单词进行归类。

进一步的,所述装置还包括:

编号单元,用于对待索引文档进行编号,并根据所述编号和文档内容生成数据项;

填入单元,用于将所述数据项填入预设大小的内存块中。

进一步的,所述排序单元用于:

对单词按照单词标记递增排序。

进一步的,所述排序单元用于:

在单词标记相同时,对所述单词按照文本编号标记递增排序。

更进一步的,所述装置还包括:

数据包封装单元,用于按照所述分类对单词进行封装,生成封装数据包,所述封装数据包包括:单词标记和所述单词标记对应的位置信息数据,所述位置信息数据采用分别差分方式进行存储。

本发明实施例提供的全文索引数据的创建方法及装置,通过多线程并行对文档进行分词,并可根据顺序对分词进行封装并生成索引,根据所述索引对单词进行排序,并对拆包后的相同单词进行归类,获取最后的索引数据。可以有效利用计算资源,减少分词时间,并可对并行分词结果排序处理,准确的得到索引数据。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的全文索引数据的创建方法的流程示意图;

图2是本发明实施例一提供的全文索引数据的创建方法中过程示意图;

图3是本发明实施例二提供的全文索引数据的创建方法的流程示意图;

图4是本发明实施例三提供的全文索引数据的创建方法的流程示意图;

图5是本发明实施例三提供的全文索引数据的创建方法中实例创建示意图;

图6是本发明实施例四提供的全文索引数据的创建装置的结构示意图。

具体实施方式

实施例一

图1为本发明实施例一提供的全文索引数据的创建方法的流程图,本实施例可适用于创建全文索引数据的情况,该方法可以由全文索引数据的创建装置来执行,该装置可由软件/硬件方式实现,并可集成于数据库系统中。

参见图1,所述全文索引数据的创建方法,包括:

S110,并行对文档进行分词,记录单词位置和单词标记。

图2是本发明实施例一提供的全文索引数据的创建方法中过程示意图,C参考图1和图2,示例性的,可以采用多个并行的处理线程来进行分词,具体数量可以根据用户的实际硬件资源调整,每个线程的工作内容是一样的,即实际的数据切分,分配单词标记Term ID,记录单词位置Term位置。所述并行的处理线程是指当一个程序启动时,就有一个进程被操作系统(OS)创建,与此同时一个线程也立刻运行,该线程通常叫做程序的主线程(Main Thread),因为它是程序开始时就执行的,如果你需要再创建线程,那么创建的线程就是这个主线程的子线程。每个进程至少都有一个主线程。子线程的数量由系统的硬件处理能力决定。示例性的,根据中央处理器频率、缓存大小和内存大小等决定。硬件处理能力越强,子线程的数量越多。

S120,按照用于记录单词位置和单词标记的存储数据块顺序对所述分词的结果依次进行封装,生成封装块和封装块的索引,所述索引包括:词编号及数量。

在分词完成后,按照用于记录单词位置和单词标记的存储数据块顺序对所述分词的结果依次进行封装。具体的,对分词结果可以按照线程处理顺序封装成封装块,并生成后续流程可以处理的索引,包括编号,词数量等信息,也可保证了整体数据的有序性。

S130,根据所述索引对单词进行排序。

根据生成的索引对每个线程处理的分词结果进行排序,示例性的,可以对分词结果按照Term ID递增排序,相同的Term ID内部,按照Doc ID递增排序,相同的Doc ID内部按照位置信息递增排序

S140,对所述封装块进行拆包,对相同的单词进行归类。

对接收到的有序分词结果进行索引任务的拆包处理,使得相同Term的数据归为一类,这样就生成了最终需要的倒排数据。

本实施例通过多线程并行对文档进行分词,并可根据顺序对分词进行封装并生成索引,根据所述索引对单词进行排序,并对拆包后的相同单词进行归类,获取最后的索引数据。可以有效利用计算资源,减少分词时间,并可对并行分词结果排序处理,准确的得到索引数据。

实施例二

图3是本发明实施例二提供的全文索引数据的创建方法的流程示意图,本发明实施例以上述实施例为基础,进一步的,在并行对文档进行分词之前,增加:对待索引文档进行编号,并根据所述编号和文档内容生成数据项;将所述数据项填入预设大小的内存块中。

参见图3,所述全文索引数据的创建方法,包括:

S210,对待索引文档进行编号,并根据所述编号和文档内容生成数据项。

据Doc ID(文档编号)的顺序开始封装数据项,每个数据块含有有序的Doc ID及对应的文档内容。

S220,将所述数据项填入预设大小的内存块中。

示例性的,可以通过主线程预先读取文档到文本池,所述文本池可理解为一块大内存,多个分词子线程负责从文本池读入将读存储位置偏移量offset下移,然后进行分词。主线程与工作线程采用生产者消费者模式机制,之间用信号量控制。并由主线程负责设置当前所有分词线程结果存放结果的内存指针。

S230,并行对文档进行分词,记录单词位置和单词标记。

S240,按照用于记录单词位置和单词标记的存储数据块顺序对所述分词的结果依次进行封装,生成封装块和封装块的索引,所述索引包括:词编号及数量。

S250,根据所述索引对单词进行排序。

S260,对所述封装块进行拆包,对相同的单词进行归类。

本实施例通过在并行对文档进行分词之前,增加:对待索引文档进行编号,并根据所述编号和文档内容生成数据项;将所述数据项填入预设大小的内存块中。可以根据线程分配相同的数据块进行分词处理,使每个线程工作量均衡,并可保证顺序一致。

实施例三

图4是本发明实施例三提供的全文索引数据的创建方法的流程示意图,本发明实施例以上述实施例为基础,进一步的,在对相同的单词进行归类之后,增加如下步骤:按照所述分类对单词进行封装,生成封装数据包,所述封装数据包包括:单词标记和所述单词标记对应的位置信息数据,所述位置信息数据采用分别差分方式进行存储。

参见图4,所述全文索引数据的创建方法,包括:

S310,对待索引文档进行编号,并根据所述编号和文档内容生成数据项。

图5是本发明实施例三提供的全文索引数据的创建方法中实例创建示意图,参见图4和图5。

S320,将所述数据项填入预设大小的内存块中。

S330,并行对文档进行分词,记录单词位置和单词标记。

S340,按照用于记录单词位置和单词标记的存储数据块顺序对所述分词的结果依次进行封装,生成封装块和封装块的索引,所述索引包括:词编号及数量。

S350,根据所述索引对单词进行排序。

S360,对所述封装块进行拆包,对相同的单词进行归类。

S370,按照所述分类对单词进行封装,生成封装数据包,所述封装数据包包括:单词标记和所述单词标记对应的位置信息数据,所述位置信息数据采用分别差分方式进行存储。

在按照Term进行分类,相同Term封装成一个数据包,包内数据采用的是每个Term ID对应的doc串和位置信息串分别差分方式,可减少后期数据存储的压力。举例如下:

数据值序列=3,5,7,11,13,17,...

压缩编码后=3,2,2,4,2,4,...。

本实施例通过在对相同的单词进行归类之后,增加如下步骤:按照所述分类对单词进行封装,生成封装数据包,所述封装数据包包括:单词标记和所述单词标记对应的位置信息数据,所述位置信息数据采用分别差分方式进行存储。可以有效减少后期数据存储的压力。

实施例四

图6是本发明实施例斯提供的全文索引数据的创建装置的结构示意图,如图6所示,所述装置包括:

分词单元410,用于并行对文档进行分词,记录单词位置和单词标记;

封装单元420,用于按照用于记录单词位置和单词标记的存储数据块顺序对所述分词的结果依次进行封装,生成封装块和封装块的索引,所述索引包括:词编号及数量;

排序单元430,用于根据所述索引对单词进行排序;

归类单元440,用于对所述封装块进行拆包,对相同的单词进行归类。

本实施例提供的全文索引数据的创建装置,通过多线程并行对文档进行分词,并可根据顺序对分词进行封装并生成索引,根据所述索引对单词进行排序,并对拆包后的相同单词进行归类,获取最后的索引数据。可以有效利用计算资源,减少分词时间,并可对并行分词结果排序处理,准确的得到索引数据。

进一步的,所述装置还包括:

编号单元,用于对待索引文档进行编号,并根据所述编号和文档内容生成数据项;

填入单元,用于将所述数据项填入预设大小的内存块中。

进一步的,所述排序单元用于:

对单词按照单词标记递增排序。

进一步的,所述排序单元用于:

在单词标记相同时,对所述单词按照文本编号标记递增排序。

更进一步的,所述装置还包括:

数据包封装单元,用于按照所述分类对单词进行封装,生成封装数据包,所述封装数据包包括:单词标记和所述单词标记对应的位置信息数据,所述位置信息数据采用分别差分方式进行存储。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

以上对本发明的一个实施例进行了详细说明,但所述内容仅为本发明的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明申请范围所作的均等变化与改进等,均应仍归属于本发明的专利涵盖范围之内。

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