CN105589894B - 文档索引建立方法和装置、文档检索方法和装置 - Google Patents
文档索引建立方法和装置、文档检索方法和装置 Download PDFInfo
- Publication number
- CN105589894B CN105589894B CN201410642428.6A CN201410642428A CN105589894B CN 105589894 B CN105589894 B CN 105589894B CN 201410642428 A CN201410642428 A CN 201410642428A CN 105589894 B CN105589894 B CN 105589894B
- Authority
- CN
- China
- Prior art keywords
- word
- document
- preset
- value
- identifier
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种文档索引建立方法和装置,该方法包括:将具有全局文档标识的文档的文本信息进行分词以获得所述文本信息中出现的词以及相应的词标识;获取自建编号作为对应于所述全局文档标识的内部文档编号,并将所述自建编号自增预设步长值后保存;将所述词标识所对应的比特位序列数据块中对应所述内部文档编号的比特位从初始值变更为与所述初始值不同的预设值。本发明提供的文档索引建立方法和装置,利用比特位序列数据块来表示文档的索引,通过位操作就可根据其中比特位的值快速判断一个词是否存在对于某一文档的索引,从而提高检索性能。本发明还提供了一种文档检索方法和装置。
Description
技术领域
本发明涉及数据检索技术领域,特别是涉及一种文档索引建立方法和装置、文档检索方法和装置。
背景技术
对文档进行检索时,通常需要判断某篇文档是否存在,此时通常采用二分查找进行判断。其中,二分查找的过程是,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,判定文档存在,或直到子表不存在为止,此时判定文档不存在。
然而,进行二分查找的前提是对文档进行排序,一个检索系统所收到的文档的全局文档标识通常是无序的,每收到一篇新文档而建立索引时都需要对索引数据重排序,从而导致文档索引的建立和文档的检索不能够同步进行,否则容易导致检索出错,影响检索性能。而且在检索时需要判断一个文档是否存在于一个词的索引项中,一般采用二分查找,效率低,也影响检索性能。
发明内容
基于此,有必要针对目前文档索引的建立和文档的检索不能够同步进行以及通过二分查找判断文档是否存在导致影响检索性能的问题,提供一种文档索引建立方法和装置、文档检索方法和装置。
一种文档索引建立方法,所述方法包括:
将具有全局文档标识的文档的文本信息进行分词以获得所述文本信息中出现的词以及相应的词标识;
获取自建编号作为对应于所述全局文档标识的内部文档编号,并将所述自建编号自增预设步长值后保存;
将所述词标识所对应的比特位序列数据块中对应所述内部文档编号的比特位从初始值变更为与所述初始值不同的预设值。
一种文档索引建立装置,所述装置包括:
分词模块,用于将具有全局文档标识的文档的文本信息进行分词以获得所述文本信息中出现的词以及相应的词标识;
内部文档编号生成模块,用于获取自建编号作为对应于所述全局文档标识的内部文档编号,并将所述自建编号自增预设步长值后保存;
比特位序列数据块操作模块,用于将所述词标识所对应的比特位序列数据块中对应所述内部文档编号的比特位从初始值变更为与所述初始值不同的预设值。
上述文档索引建立方法和装置,对文档的文本信息进行分词以获得文本信息中出现的词以及相应的词标识,以保证相同的词生成唯一的索引项。使用递增的自建编号作为文档的内部文档编号,从而将词标识所对应的比特位序列数据块中对应内部文档编号的比特位从初始值变更为与初始值不同的预设值。这样比特位序列数据块中比特位在该比特位序列数据块中的位置就可以表示其内部文档编号,用来索引文档。而且内部文档编号是递增的,自然形成单调递增的索引,这样每录入一篇文档,无需按照其全局文档标识重排序,使得生成的对应于词标识的索引项就自然按照其内部文档编号升序存储,使得文档索引的建立和文档的检索可以同时进行,文档索引的建立可以实时进行,保证了检索性能。而且利用该比特位序列数据块,通过位操作就可根据其中比特位的值快速判断一个词是否存在对于某一文档的索引,从而提高检索文档的效率。
一种文档检索方法,所述方法包括:
对查询字符串进行分词以获得切分词的集合以及相应的词标识的集合;
在所述词标识的集合中确定第一词标识,并将所述词标识的集合中除去所述第一词标识的词标识作为第二词标识;
根据所述第一词标识所对应的索引项或者对应的比特位序列数据块中与初始值不同的预设值所在的位置以确定所述第一词标识所对应的内部文档编号;
判断所述第二词标识所对应的比特位序列数据块中所述确定的内部文档编号所对应的比特位是否为所述预设值;若是,则
获取所述确定的内部文档编号所对应的全局文档标识和/或文档内容并返回。
一种文档检索装置,所述装置包括:
查询字符串处理模块,用于对查询字符串进行分词以获得切分词的集合以及相应的词标识的集合;
词标识确定模块,用于在所述词标识的集合中确定第一词标识,并将所述词标识的集合中除去所述第一词标识的词标识作为第二词标识;
内部文档编号获取模块,用于根据所述第一词标识所对应的索引项或者对应的比特位序列数据块中与初始值不同的预设值所在的位置以确定所述第一词标识所对应的内部文档编号;
判断模块,用于判断所述第二词标识所对应的比特位序列数据块中所述确定的内部文档编号所对应的比特位是否为所述预设值;
返回模块,用于当所述判断模块判断为是时获取所述确定的内部文档编号所对应的全局文档标识和/或文档内容并返回。
上述文档检索方法和装置,对查询字符串分词以获得切分词的集合以及相应的词标识的集合,将其中的一个切分词作为基准词,通过判断其它切分词的比特位序列数据块中与确定的内部文档编号所对应的比特位是否为与初始值不同的预设值,就可以快速判断出该第二词标识是否存在对于该确定的内部文档编号所对应的文档的索引,提高检索效率。而且在录入新的文档时,只要保持内部文档编号的递增就可以直接写入比特位序列数据块而不需要重排序,使得文档索引的建立和文档的检索可以同时进行,保证了检索性能。
附图说明
图1为一个实施例中用于实现文档索引建立方法和文档检索方法的电子设备的内部结构图;
图2为一个实施例中文档索引建立方法的流程示意图;
图3为一个实施例中将词标识所对应的比特位序列数据块中对应内部文档编号的比特位从初始值变更为与初始值不同的预设值的步骤的流程示意图;
图4为一个实施例中对于比特位序列数据块,每隔预设数量的比特位统计自首位到预设数量的正整数倍处的比特位中预设值的数量,并以计数块为单位追加记录在词标识所对应的计数块存储区中的步骤的流程示意图;
图5为一个实施例中文档检索方法的流程示意图;
图6为一个实施例中判断第二词标识所对应的比特位序列数据块中确定的内部文档编号所对应的比特位是否为与初始值不同的预设值的步骤的流程示意图;
图7为一个实施例中查找文档相关信息数据并返回的步骤的流程示意图;
图8为一个实施例中确定第二词标识所对应的比特位序列数据块中确定的内部文档编号所对应的比特位之前的预设值总数量的步骤的流程示意图;
图9为一个实施例中文档索引建立装置的结构框图;
图10为另一个实施例中文档索引建立装置的结构框图;
图11为再一个实施例中文档索引建立装置的结构框图;
图12为一个实施例中文档索引建立装置的结构框图;
图13为一个实施例中文档检索装置的结构框图;
图14为一个实施例中图13中的判断模块的结构框图;
图15为另一个实施例中文档检索装置的结构框图;
图16为一个实施例中图15中的预设值总数量确定模块的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,提供了一种电子设备,该电子设备包括通过系统总线连接的处理器、内存和存储介质。其中,该电子设备的存储介质存储有操作系统、数据库,还存储有一种文档索引建立装置和/或一种文档检索装置。该文档索引建立装置用于实现一种文档索引建立方法,该文档检索装置用于实现一种文档检索方法。该电子设备的处理器用于提供计算和控制能力,支撑整个电子设备的运行。该电子设备的内存为存储介质中的文档索引建立装置和/或文档检索装置提供运行环境。该电子设备可以是一个独立的设备,或者可以是多个可互联通信的电子设备组成的电子设备群,文档索引建立装置和/或一种文档检索装置的各个功能模块可分别部署在电子设备群中的各个电子设备上。该电子设备可以是台式计算机。
如图2所示,在一个实施例中,提供了一种文档索引建立方法,本实施例以该方法应用于上述图1中的电子设备来举例说明。该方法具体包括如下步骤:
步骤202,将具有全局文档标识的文档的文本信息进行分词以获得文本信息中出现的词以及相应的词标识。
全局文档标识是指供搜索引擎用来定位文档的标识数据,这里的全局是指搜索引擎能够覆盖的范围。文档是指包括可读文本信息的独立数据对象,可以是网页、网站以及如TXT(即文本文件,其扩展名为TXT)、DOC(微软公司开发的一种电子文档格式)、DOCX(微软公司开发的一种电子文档格式)等各种格式的电子文档。可以采用文档的MD5(MessageDigest Algorithm 5,消息摘要算法第五版)值作为其全局文档标识。
可以根据文档的格式而从文档中抽取文本信息,以过滤掉无关信息,提升处理效率。比如文档为网页,则过滤掉例如<html>、</html>这样的语言标记。可将文档的文本信息进行分词并去重,从而获得出现在该文本信息中的词。分词是指从文本信息的字符串中切分出独立的词的过程,对分词获得的切分词去重可以去除其中重复的词以获得文本信息中出现的词。文本信息中出现的词是不重复的。词标识是唯一标识出一个词的标识数据。预先定义了词与相应的词标识之间的对应关系,从而可以根据该对应关系来获取文本信息中出现的词所对应的词标识。
步骤204,获取自建编号作为对应于全局文档标识的内部文档编号,并将自建编号自增预设步长值后保存。
自建编号是指电子设备本地维护的递增的数值标识。内部文档编号则是电子设备建立的在本地唯一标识出该文档的数值标识,不具有全局性。具体地,电子设备本地维护保存一个自建编号,在建立文档的索引时,将该自建编号作为该文档的内部文档编号,并记录该全局文档标识和该内部文档编号的对应关系,并且将自建编号自增预设步长值并保存,该保存的自建编号用于在建立下一个文档的索引时作为该下一个文档的内部文档编号。其中将自建编号自增预设步长值后保存的步骤可以在获取自建编号作为对应于全局文档标识的内部文档编号的步骤之前,也可以在其后,事先约定即可。预设步长值可以取为1。
步骤206,将词标识所对应的比特位序列数据块中对应内部文档编号的比特位从初始值变更为与初始值不同的预设值。
词标识所对应的比特位序列数据块是指用于存储该词标识所对应的比特位序列数据块的连续存储区域,该比特位序列数据块包括若干比特位,并将每个比特位初始化为初始值。
该比特位序列数据块用于记录索引,具体来说,该比特位序列数据块中每个比特位对应一个内部文档编号,而每个比特位的值则表示该比特位序列数据库所属的词标识是否存在于该内部文档编号所对应的文档的文本信息中。这里当初始值为数值0时,预设值取数值1;当初始值为数值1时,预设值取数值0。
通过维护对应于词标识的比特位序列数据块,利用该比特位序列数据块,可以快速确定一个内部文档编号对应该词标识所对应的索引项的序号,也可以快速确定一个词标识所对应的索引项是否与内部文档编号匹配,从而提高检索文档的效率。
上述文档索引建立方法,对文档的文本信息进行分词以获得文本信息中出现的词以及相应的词标识,以保证相同的词生成唯一的索引项。使用递增的自建编号作为文档的内部文档编号,从而将词标识所对应的比特位序列数据块中对应内部文档编号的比特位从初始值变更为与初始值不同的预设值。这样比特位序列数据块中比特位在该比特位序列数据块中的位置就可以表示其内部文档编号,用来索引文档。而且内部文档编号是递增的,自然形成单调递增的索引,这样每录入一篇文档,无需按照其全局文档标识重排序,使得生成的对应于词标识的索引项就自然按照其内部文档编号升序存储,使得文档索引的建立和文档的检索可以同时进行,文档索引的建立可以实时进行,保证了检索性能。而且利用该比特位序列数据块,通过位操作就可根据其中比特位的值快速判断一个词是否存在对于某一文档的索引,从而提高检索文档的效率。
在一个实施例中,在步骤206之前,还包括:根据预设词频数据或预设高频词表或预设低频词表判断所述文本信息中出现的词是高频词还是低频词。若是高频词,则执行步骤206,若是低频词,则根据所述内部文档编号生成索引项,并将所述索引项追加记录在所述词标识所对应的索引项存储区。
具体地,预设词频数据是指预先统计的词出现频率的数据,通过设定频率阈值,若文本信息中出现的词对应的出现频率超过该频率阈值则判定为高频词;若文本信息中出现的词对应的出现频率未超过该频率阈值则判定为低频词。在另一个实施例中,可以判断文本信息中出现的词是否存在于预设高频词表中,若是则判定为高频词,若否则判定为低频词。在一个实施例中,还可以判断文本信息中出现的词是否存在于预设低频词表中,若是则判定为低频词,若否则判定为高频词。
词标识所对应的索引项存储区是用于存储索引项的连续存储区域。追加记录是指直接记录在索引项存储区中已有索引项的后面,当然若是第一个索引项则直接存储在索引项存储区的首地址处。
索引项根据内部文档编号生成,比如将内部文档编号直接包含在索引项中;也可以在第一个索引项中直接记录相应的内部文档编号,而从第二个索引项开始仅记录当前索引项与前一个索引项各自对应的内部文档编号的差值,这样可以节省存储开销。索引项还可以包括该文本信息中出现的词相对于文本信息的词频信息、出现位置信息等。
由于内部文档编号是递增分配的,这样将对应内部文档编号生成的索引项直接追加记录在索引项存储区中,不需要改变已存储的索引项就可以保证索引项存储区中的所有索引项是按照各自对应的内部文档编号升序存储,避免了重排序的操作,可以保证索引的建立和文档的检索的同时进行。
本实施例中,考虑到比特位序列数据块为固定长度,若一律按照比特位序列数据块来建立索引,对于一些出现频率较低的词则会导致浪费很多的存储资源。因此这里将词分为高频词和低频词,低频词需要建立的索引少,不采用固定长度的比特位序列数据块而是在索引项存储区存储索引项来建立索引,通过二分查找就可以达到很高的检索性能。而对于高频词,由于其需要建立的索引多,采用比特位序列数据块来建立索引不仅占用存储资源少,而且检索效率得到提高。
如图3所示,在一个实施例中,初始值为数值0,预设值为数值1;将词标识所对应的比特位序列数据块中对应内部文档编号的比特位从初始值变更为与初始值不同的预设值的步骤,具体包括如下步骤:
步骤302,获取内部文档编号所对应的比特位序列数据块中的字节。
定义指针函数p_bitmap为char*类型,指向比特位序列数据块的首地址,且该比特位序列数据块每个比特位都赋值为数值0。char*表示字符类型的指针变量类型。对一个新的文档建立索引时,利用公式(1)将内部文档编号所对应的比特位序列数据块中的比特位从数值0变更为数值1。
公式(1):p_bitmap[inner_docid>>3]|=(1<<(inner_docid&0x07))。
其中,inner_docid是指内部文档编号,符号“|=”是将该符号前后的量按位或后赋值给该符号前面的量。“>>”是位右移操作符,“<<”是位左移操作符,“&”是按位与操作符。
具体地,步骤302用于计算p_bitmap[inner_docid>>3]。计算机在处理数据时按字节处理,这里将内部文档编号右移3位所指向的比特位序列数据块中的地址,对应的就是内部文档编号所对应的比特位序列数据块中的字节。
步骤304,获取内部文档编号的二进制低三位,或者以十进制数值8为模计算内部文档编号的第一余数。
具体地,步骤306用于计算inner_docid&0x07,0x07表示16进制下的数值7,对应二进制数值111,与内部文档编号按位与后表示取内部文档编号的二进制低三位,相当于将内部文档编号对十进制数值8取模后的余数。为了与下述计算过程中的余数相区别,称其为第一余数。
步骤306,将数值1按照获取的二进制低三位或者第一余数左移后,再与获取的字节进行按位或运算,并将运算结果赋值给内部文档编号所对应的比特位序列数据块中的字节。
具体地,步骤306用于计算上述公式(1)的值。步骤304中获取的二进制低三位与第一余数表示的是相同的数值,将数值1按照其所表示的数值左移后,再与步骤302中计算的p_bitmap[inner_docid>>3]进行按位或运算,并再赋值给p_bitmap[inner_docid>>3],是为了将内部文档编号所对应的比特位赋值为数值1并且不改变其它比特位的值。
本实施例中,通过少量位操作便可以实现对词标识所对应的比特位序列数据块中对应内部文档编号的比特位进行快速赋值,提高建立文档索引的效率。
在一个实施例中,上述文档索引建立方法还包括步骤:对于比特位序列数据块,每隔预设数量的比特位统计自首位到预设数量的正整数倍处的比特位中预设值的数量,并以计数块为单位追加记录在词标识所对应的计数块存储区中。
具体地,本实施例中,每隔比特位序列数据块中预设数量的比特位,就统计该比特位序列数据块中自首位开始到预设数量的正整数倍处的所有比特位中预设值的数量。以计数块为单位是指每次统计的预设值的数量记录在一个计数块中。词标识所对应的比特位序列数据块中的预设值是与词标识所对应的索引项按顺序一一对应,这样通过统计预设值的数量就可以快速确认所对应的索引项。而由于建立大量分档的索引后,相应的比特位序列数据块会很长,实时统计会影响检索性能,因此通过将统计的数量记录在计数块存储区的计数块中,检索时就可以快速获取统计的数量,进而根据内部文档编号快速确定索引项,提高文档检索效率。
如图4所示,在一个实施例中,初始值为数值0,预设值为数值1;方法还包括以下步骤402~步骤406,且该步骤402~步骤406是对于比特位序列数据块,每隔预设数量的比特位统计自首位到预设数量的正整数倍处的比特位中预设值的数量,并以计数块为单位追加记录在词标识所对应的计数块存储区中的具体步骤。
步骤402,以预设数量为模而计算内部文档编号的第二余数。
具体地,若预设数量为64,则每64比特位的比特位序列数据块,对应用一个4B(字节)大小的计数块来记录比特位序列数据块中当前内部文档编号所对应的比特位之前的比特位中数值1的数量。以预设数量为模取余,是为了判断当前内部文档编号所对应的比特位之前的比特位数是否已达到预设数量的正整数倍。
步骤404,当第二余数为数值0时,统计比特位序列数据块中在内部文档编号所对应的比特位之前的数值1的数量。
具体地,内部文档编号从0开始,若第二余数为数值0,说明当前内部文档编号所对应的比特位之前的比特位数已达到预设数量的正整数倍,从而统计相应的比特位序列数据块中当前比特位之前的数值1的数量。
步骤406,将统计的数量以计数块为单位追加记录在词标识所对应的计数块存储区中。
词标识所对应的额计数块存储区是用于存储统计的数量的连续存储区域。步骤404中统计的数量追加记录在计数块存储区中,这样每隔预设数量的比特位所统计的数量是按统计先后顺序存储在计数块存储区的。
举例说明,比如当内部文档编号为64时,以64为模取余的第二余数为数值0,则统计词标识所对应的比特位序列数据块中从0比特位到63比特位内数值1的数量,记录在数组bit_count[0]中。类似地,当内部文档编号为128时,统计的词标识所对应的比特位序列数据块中从0比特位到127比特位内数值1的数量记录在数组bit_count[1]中,依次类推。
在一个实施例中,上述文档索引建立方法还包括步骤:根据出现的词和文本信息生成对应于出现的词的文档相关信息数据,并追加记录在词标识所对应的文档相关信息数据存储区中。
具体地,文档相关信息数据是指一个词在文档的文本信息环境下的相关性信息,根据文档的文本信息以及该文本信息中出现的词生成。文档相关信息数据包括这些词的payload(元数据),该元数据用于描述该索引项的一些特征,比如该词权重信息、词评分信息等。
在词标识所对应的文档相关信息数据存储区追加记录对应于文本信息中出现的词的文档相关信息数据,可以保证文档相关信息数据存储区中文档相关信息数据的存储顺序与索引项存储区中索引项的存储顺序一致,从而可以快速获取与索引项对应的文档相关信息数据。
通过提供元数据可以提供更为深入的文档检索结果,比如可以按照词频或者查询字符串中的切分词之间的相关性对检索结果进行排序,将与查询字符串更为相关的信息展示在前面,提升检索性能。
而且,利用上述词标识所对应的比特位序列数据块,可以通过统计内部文档编号所对应的比特位之前预设值的数量来快速确定内部文档编号所对应的文档相关信息数据,进一步提升检索性能。
如图5所示,在一个实施例中,提供了一种文档检索方法,用于根据按照上述各个实施例的文档索引建立方法所建立的索引来检索文档,本实施例以该方法应用于上述图1中的电子设备来举例说明。该方法具体包括如下步骤:
步骤502,对查询字符串进行分词以获得切分词的集合以及相应的词标识的集合。
具体地,查询字符串也可以称为查询词,是用户输入的查询条件,检索到的文档的文本信息应当与该查询字符串匹配。对查询字符串进行分词所获得的各个切分词构成切分词的集合,根据预先定义的词与相应的词标识之间的对应关系,获取每个切分词所对应的词标识构成词标识的集合。
步骤504,在词标识的集合中确定第一词标识,并将词标识的集合中除去第一词标识的词标识作为第二词标识。
检索文档所查找到的文档,需满足该文档的文本信息包括上述查询字符串的所有切分词,也就是需要词标识的集合中每个词标识都对应有根据同一内部文档编号所生成的索引项。这里就需要将切分词的集合中的一个切分词作为基准词,若该基准词的索引项所对应的内部文档编号,也同时与其它各个切分词的索引项匹配,则该内部文档编号所对应的文档就是要检索的结果。这里第一词标识是该基准词的词标识,而词标识的集合中除去该第一词标识的词标识就是第二词标识。在一个实施例中第一词标识可以从词标识的集合中随机选取。
在一个实施例中,在词标识的集合中确定第一词标识,包括:将词标识的集合中对应最少索引项的词标识作为第一词标识。采用对应最少索引项的词标识作为第一词标识,这样基准词所对应的内部文档编号数量最少,可以提高文档检索效率。
步骤506,根据第一词标识所对应的索引项或者对应的比特位序列数据块中与初始值不同的预设值所在的位置以确定第一词标识所对应的内部文档编号。
具体地,若第一词标识对应有索引项,其为低频词,则根据其索引项来确定第一词标识所对应的内部文档编号。若索引项包括内部文档编号,则可直接将索引项所包括的内部文档编号作为确定的内部文档编号。若索引项包括当前索引项与前一个索引项各自对应的内部文档编号的差值,则可以根据第一词标识所对应的第一个索引项以及从第二个索引项开始记录的差值来确定每个索引项所对应的内部文档编号。若第一词标识对应有比特位序列数据块,其为高频词,则可以如上述文档索引建立方法中的,根据该第一词标识所对应的比特位序列数据块中预设值所在的比特位的位置来确定内部文档编号,该预设值不同于该比特位序列数据块中的初始值。
对于低频词,第一词标识和第二词标识所对应的索引项采用上述各个实施例的文档索引建立方法生成,追加记录在词标识所对应的索引项存储区中。这样第一词标识和第二词标识所对应的索引项自然分别按照用来生成其索引项的内部文档编号的升序顺序而存储。对于高频词,则第一词标识和第二词标识所对应的各自的比特位序列数据块中的预设值自然也是按照内部文档编号的升序顺序来记录的。
步骤508,判断第二词标识所对应的比特位序列数据块中确定的内部文档编号所对应的比特位是否为预设值。若是则执行步骤510,若否则执行步骤512。
具体地,如上述文档索引建立方法的实施例中,建立索引时,将词标识所对应的比特位序列数据块中对应内部文档编号的比特位从初始值变更为与初始值不同的预设值。比特位序列数据块用于表示该词标识所对应的索引项与内部文档编号的对应关系,具体若比特位值为初始值,说明该词标识不具有对应该内部文档编号的索引项;而若比特位值为与初始值不同的预设值,则说明该词标识具有对应该内部文档编号的索引项。
通过对应于第二词标识的比特位序列数据块,可以快速确定上述确定的内部文档编号所表示的文档是否存在于第二词标识所对应的索引项,从而可以提高文档检索效率。
步骤510,获取确定的内部文档编号所对应的全局文档标识和/或文档内容并返回。
具体地,若确定的内部文档编号同时与第一词标识和第二词标识所对应的索引项匹配,说明该内部文档编号所对应的文档包括上述切分词的集合中的各个切分词,需要将其全局文档标识,或者其文档内容,或者全局文档标识以及其文档内容返回给检索侧。这里检索侧是指发起查询字符串的用户端侧。
步骤512,返回未检索到与查询字符串匹配的文档的消息。
具体地,若确定的内部文档编号与至少一个第二词标识所对应的索引项不匹配,说明该内部文档标识所对应的文档不是检索目标,可以直接舍弃。若所有确定的内部文档编号都不能够与每个第二词标识所对应的索引项匹配,则直接返回未检索到与查询字符串匹配的文档的消息,以提示用户没有检索到与查询字符串匹配的文档。
上述文档检索方法,对查询字符串分词以获得切分词的集合以及相应的词标识的集合,将其中的一个切分词作为基准词,通过判断其它切分词的比特位序列数据块中与确定的内部文档编号所对应的比特位是否为与初始值不同的预设值,就可以快速判断出其文档是否存在于其索引项,提高检索效率。而且在录入新的文档时,只要将对应递增的内部文档编号新生成的索引项追加在已有的索引项之后就可以建立新的索引项,不需要按照其全局文档标识重排序,使得文档索引的建立和文档的检索可以同时进行,保证了检索性能。
在一个实施例中,步骤508之前,还包括:根据预设词频数据或预设高频词表或预设低频词表判断所述第二词标识所对应的词是高频词还是低频词。若是高频词,则执行步骤508。若是低频词,则进一步判断所述确定的内部文档编号是否与所述第二词标识所对应的索引项匹配;若匹配则执行步骤510,若不匹配则执行步骤512。
具体地,预设词频数据是指预先统计的词出现频率的数据,通过设定频率阈值,若第二词标识所对应的词对应的出现频率超过该频率阈值则判定为高频词;若第二词标识所对应的词对应的出现频率未超过该频率阈值则判定为低频词。在另一个实施例中,可以判断第二词标识所对应的词是否存在于预设高频词表中,若是则判定为高频词,若否则判定为低频词。在一个实施例中,还可以判断第二词标识所对应的词是否存在于预设低频词表中,若是则判定为低频词,若否则判定为高频词。
对于高频词采用比特位序列数据块来作为索引依据进行检索,而对于低频词则采用索引项存储区中存储的索引项来作为索引依据进行检索。其中,若第二词标识所对应的词既有高频词也有低频词,则对于条件(1):其中作为高频词的第二词标识所对应的比特位序列数据块中确定的内部文档编号所对应的比特位为预设值;条件(2):确定的内部文档编号与其中作为低频词的第二词标识所对应的索引项匹配。当同时满足上述条件(1)和上述条件(2)时执行步骤510,否则执行步骤512。
本实施例中,考虑到比特位序列数据块为固定长度,若一律按照比特位序列数据块来建立索引,对于一些出现频率较低的词则会导致浪费很多的存储资源。因此这里将词分为高频词和低频词,低频词需要建立的索引少,不采用固定长度的比特位序列数据块而是在索引项存储区存储索引项来建立索引,通过二分查找就可以达到很高的检索性能。而对于高频词,由于其需要建立的索引多,采用比特位序列数据块来建立索引不仅占用存储资源少,而且检索效率得到提高。
如图6所示,在一个实施例中,初始值为数值0,预设值为数值1。且上述步骤508具体包括如下步骤:
步骤602,获取第二词标识所对应的比特位序列数据块中确定的内部文档编号所对应的字节;取确定的内部文档编号的低三位作为中间值;将获取的字节和中间值进行按位与运算,获得第二词标识所对应的比特位序列数据块中确定的内部文档编号所对应的比特位数值。
具体地,采用以下公式(2)来计算第二词标识所对应的比特位序列数据块中对应于上述确定的内部文档编号的比特位数值。
公式(2):p_bitmap[inner_docid>>3]&(1<<(inner_docid&0x07))。
其中,p_bitmap为char*类型,指向存储比特位序列数据块的数据块的首地址。char*表示字符类型的指针变量类型。inner_docid是指上述确定的内部文档编号,“>>”是位右移操作符,“<<”是位左移操作符,“&”是按位与操作符。
inner_docid>>3表示获取确定的内部文档编号所对应的比特位序列数据块中的字节。inner_docid&0x07表示取上述确定的内部文档编号的低三位作为中间值。上述公式(2)表示将获取的字节和中间值进行按位与运算,从而获得第二词标识所对应的比特位序列数据块中确定的内部文档编号所对应的比特位数值。
步骤604,判断比特位数值是否为数值1。若是则执行步骤510,若否则执行步骤512。
计算出比特位数值,判断其是数值0还是数值1。若比特位数值为数值0则表示确定的内部文档编号与第二词标识所对应的索引项不匹配;若比特位数值为数值1则表示确定的内部文档编号与第二词标识所对应的索引项匹配。
本实施例可以实现快速判断确定的内部文档编号所表示的文档是否存在于第二词标识所对应的索引项,提高文档检索效率。
如图7所示,在一个实施例中,上述文档检索方法还包括查找文档相关信息数据并返回的步骤,具体包括如下步骤:
步骤702,确定第二词标识所对应的比特位序列数据块中确定的内部文档编号所对应的比特位之前的预设值总数量。
如图8所示,在一个实施例中,步骤702具体包括如下步骤:
步骤802,根据确定的内部文档编号而从第二词标识所对应的顺序记录的计数块集合中确定当前计数块的前一计数块。
具体地,如上述文档索引建立方法的实施例中的,每隔比特位序列数据块中预设数量的比特位,就统计该比特位序列数据块中自首位开始到预设数量的正整数倍处的比特位中预设值的数量并记录在计数块存储区中顺序排列的计数块中。当前计数块是指确定的内部文档编号所对应的计数块,当前计数块所对应的预设数量的正整数倍大于该确定的内部文档编号,而该前一计数块所对应的预设数量的正整数倍则小于该确定的内部文档编号。
步骤804,获取该前一计数块所记录的第二词标识所对应的比特位序列数据块中自首位到该前一计数块所对应的预设数量的正整数倍处的比特位中预设值的第一统计数量。
具体地,获取该前一计数块所记录的数值作为第一统计数量,该第一统计数量是指第二词标识所对应的比特位序列数据块中自首位到该前一计数块所对应的预设数量的正整数倍处的所有比特位的范围内统计的预设值的数量。
步骤806,获取第二词标识所对应的比特位序列数据块中自预设数量的正整数倍处的比特位到确定的内部文档编号所对应的比特位之前的预设值的第二统计数量。
具体地,对于第二词标识所对应的比特位序列数据块,获取其中自该前一计数块所对应的预设数量的正整数倍处这一比特位位置开始,到确定的内部文档编号所对应的比特位之前这一比特位范围内,统计预设值的数量作为第二统计数量。
步骤808,根据第一统计数量和第二统计数量的和确定预设值总数量。
具体地,计算第一统计数量和第二统计数量的和就可以得出第二词标识所对应的比特位序列数据块中确定的内部文档编号所对应的比特位之前的预设值总数量。
进一步地,在一个实施例中,初始值为数值0,预设值为数值1,则可以利用公式(3)来计算预设值总数量,该公式(3)是上述步骤802~步骤808的具体实现方式。
公式(3):p_bit_count[inner_docid&0x3f]+bitcount(p_bitmap[inner_docid>>6]&(1<<(inner_docid&0x3f)-1))。
其中,p_bit_count为int*类型,指向bit为1的计数块的首地址。int*类型是指整数型指针变量类型。inner_docid是指确定的内部文档编号,p_bitmap指向第二词标识所对应的比特位序列数据块的首地址,“&”是按位与操作符,“>>”是位右移操作符,“<<”是位左移操作符,“bitcount”是用来统计一个二进制串中数值1的数量的函数。
步骤704,根据确定的数量预设值总数量以从对应于第二词标识而顺序记录的文档相关信息数据集合中获取对应于确定的内部文档编号的文档相关信息数据并返回。
具体地,如上述文档索引建立方法的实施例的,第二词标识所对应的比特位序列数据块中的每个预设值,分别对应于文档相关信息数据存储区中的一个文档相关信息数据,并且顺序一致,这样通过确定该比特位序列数据块中确定的内部文档编号所对应的比特位之前的预设值总数量,就可以据之从第二词标识所对应的文档相关信息数据存储区获取相应的文档相关信息数据。
本实施例中,考虑到建立大量分档的索引后,相应的比特位序列数据块会很长,实时统计会影响检索性能,因此通过将统计的数量记录在计数块存储区的计数块中,检索时就可以快速获取统计的数量,进而根据内部文档编号快速确定索引项,提高文档检索效率。
如图9所示,在一个实施例中,提供了一种文档索引建立装置900,具有实现上述各个实施例的文档索引建立方法的功能。该文档索引建立装置900包括分词模块901、内部文档编号生成模块902和比特位序列数据块操作模块903。
分词模块901,用于将具有全局文档标识的文档的文本信息进行分词以获得文本信息中出现的词以及相应的词标识。具体地,分词模块901可用于采用文档的MD5值作为其全局文档标识。分词模块901可用于根据文档的格式而从文档中抽取文本信息,以过滤掉无关信息,提升处理效率。分词模块901可用于根据预先定义的词与相应的词标识之间的对应关系,获取文本信息中出现的词所对应的词标识。
内部文档编号生成模块902,用于获取自建编号作为对应于全局文档标识的内部文档编号,并将自建编号自增预设步长值后保存。具体地,内部文档编号生成模块902用于在本地维护保存一个自建编号,在建立文档的索引时,将该自建编号作为该文档的内部文档编号,并记录该全局文档标识和该内部文档编号的对应关系,并且将自建编号自增预设步长值并保存,该保存的自建编号用于在建立下一个文档的索引时作为该下一个文档的内部文档编号。内部文档编号生成模块902可用于在执行获取自建编号作为对应于全局文档标识的内部文档编号之前或之后执行将自建编号自增预设步长值后保存。
比特位序列数据块操作模块903,用于将词标识所对应的比特位序列数据块中对应内部文档编号的比特位从初始值变更为与初始值不同的预设值。其中,词标识所对应的比特位序列数据块是指用于存储该词标识所对应的比特位序列数据块的连续存储区域,该比特位序列数据块包括若干比特位,且每个比特位被初始化为初始值。对应词标识建立了索引,具体地,在该词标识所对应的比特位序列数据块中与该内部文档编号对应的比特位置为预设值。这里当初始值为数值0时,预设值取数值1;当初始值为数值1时,预设值取数值0。
通过维护对应于词标识的比特位序列数据块,利用该比特位序列数据块,可以快速确定一个词标识所对应的索引项是否与内部文档编号匹配,从而提高检索文档的效率。
上述文档索引建立装置900,对文档的文本信息进行分词以获得文本信息中出现的词以及相应的词标识,以保证相同的词生成唯一的索引项。使用递增的自建编号作为文档的内部文档编号,生成索引项而追加记录在该词标识所对应的索引项存储区。这样每录入一篇文档,无需按照其全局文档标识重排序,使得生成的对应于词标识的索引项就自然按照其内部文档编号升序存储,不需要重排序,使得文档索引的建立和文档的检索可以同时进行,文档索引的建立可以实时进行,保证了检索性能。而且将词标识所对应的比特位序列数据块中对应内部文档编号的比特位从初始值变更为与初始值不同的预设值,利用该比特位序列数据块,可以快速确定文档是否存在于一个词标识所对应的索引项,从而提高检索文档的效率。
如图10所示,在一个实施例中,该文档索引建立装置900还包括:判断模块904和索引项生成模块905。所述判断模块904用于根据预设词频数据或预设高频词表或预设低频词表判断所述文本信息中出现的词是高频词还是低频词。所述比特位序列数据块操作模块903还用于当判定所述文本信息中出现的词是高频词时将所述词标识所对应的比特位序列数据块中对应所述内部文档编号的比特位从初始值变更为与所述初始值不同的预设值。所述索引项生成模块905用于当判定所述文本信息中出现的词是低频词时根据所述内部文档编号生成索引项,并将所述索引项追加记录在所述词标识所对应的索引项存储区。
在一个实施例中,初始值为数值0,预设值为数值1;比特位序列数据块操作模块903还用于获取内部文档编号所对应的比特位序列数据块中的字节;获取内部文档编号的二进制低三位,或者以十进制数值8为模计算内部文档编号的第一余数;将数值1按照获取的二进制低三位或者第一余数左移后,再与获取的字节进行按位或运算,并将运算结果赋值给内部文档编号所对应的比特位序列数据块中的字节。具体地,比特位序列数据块操作模块903用于利用上述公式(1)将内部文档编号所对应的比特位序列数据块中的比特位从数值0变更为数值1。
本实施例中,通过少量位操作便可以实现对词标识所对应的比特位序列数据块中对应内部文档编号的比特位进行快速赋值,提高建立文档索引的效率。
如图11所示,在一个实施例中,该文档索引建立装置900还包括:计数模块906,用于对于比特位序列数据块,每隔预设数量的比特位统计自首位到预设数量的正整数倍处的比特位中预设值的数量,并记录在词标识所对应的计数块存储区中追加的计数块中。
具体地,本实施例中,每隔比特位序列数据块中预设数量的比特位,就统计该比特位序列数据块中自首位开始的预设数量的正整数倍处的比特位中预设值的数量。词标识所对应的比特位序列数据块中的预设值是与词标识所对应的索引项按顺序一一对应,这样通过统计预设值的数量就可以快速确认所对应的索引项。而由于建立大量分档的索引后,相应的比特位序列数据块会很长,实时统计会影响检索性能,因此通过将统计的数量记录在计数块存储区的计数块中,检索时就可以快速获取统计的数量,进而根据内部文档编号快速确定索引项,提高文档检索效率。
如图11所示,在一个实施例中,初始值为数值0,预设值为数值1,计数模块906具体包括:余数计算模块906a、统计模块906b和记录模块906c。
余数计算模块906a,用于以预设数量为模而计算内部文档编号的第二余数。具体地,若预设数量为64,则每64比特位的比特位序列数据块,对应用一个4B大小的计数块来记录比特位序列数据块中当前内部文档编号所对应的比特位之前的比特位中数值1的数量。以预设数量为模取余,是为了判断当前内部文档编号所对应的比特位之前的比特位数是否已达到预设数量的正整数倍。
统计模块906b,用于当第二余数为数值0时,统计比特位序列数据块中在内部文档编号所对应的比特位之前的数值1的数量。具体地,内部文档编号从0开始,若第二余数为数值0,说明当前内部文档编号所对应的比特位之前的比特位数已达到预设数量的正整数倍,从而统计相应的比特位序列数据块中当前比特位之前的数值1的数量。
记录模块906c,用于将统计的数量记录在词标识所对应的计数块存储区中追加的计数块中。
如图12所示,在一个实施例中,该文档索引建立装置900还包括:文档相关信息数据处理模块907,用于在词标识所对应的文档相关信息数据存储区追加记录根据切分词和文本信息生成的对应于切分词的文档相关信息数据。
具体地,文档相关信息数据是指一个词在文档的文本信息环境下的相关性信息,根据切分词和文档的文本信息生成。文档相关信息数据包括切分词的payload(元数据),该元数据用于描述该索引项的一些特征,比如该切分词的词权重信息、词评分信息等。
文档相关信息数据处理模块907用于在词标识所对应的文档相关信息数据存储区追加记录对应于切分词的文档相关信息数据,可以保证文档相关信息数据存储区中文档相关信息数据的存储顺序与索引项存储区中索引项的存储顺序一致,从而可以快速获取与索引项对应的文档相关信息数据。
通过提供元数据可以提供更为深入的文档检索结果,比如可以按照词频或者查询字符串中的切分词之间的相关性对检索结果进行排序,将与查询字符串更为相关的信息展示在前面,提升检索性能。而且,利用上述词标识所对应的比特位序列数据块,可以通过统计内部文档编号所对应的比特位之前预设值的数量来快速确定内部文档编号所对应的文档相关信息数据,进一步提升检索性能。
如图13所示,在一个实施例中,提供了一种文档检索装置1300,具有实现上述各个实施例的文档检索方法的功能。该文档检索装置1300包括:查询字符串处理模块1301、词标识确定模块1302、内部文档编号获取模块1303、判断模块1304和返回模块1305。
查询字符串处理模块1301,用于对查询字符串进行分词以获得切分词的集合以及相应的词标识的集合。具体地,查询字符串处理模块1301用于对查询字符串进行分词所获得的各个切分词构成切分词的集合,根据预先定义的词与相应的词标识之间的对应关系,获取每个切分词所对应的词标识构成词标识的集合。
词标识确定模块1302,用于在词标识的集合中确定第一词标识,并将词标识的集合中除去第一词标识的词标识作为第二词标识。在一个实施例中第一词标识可以从词标识的集合中随机选取。在一个实施例中,词标识确定模块1302还用于将词标识的集合中对应最少索引项的词标识作为第一词标识。。
内部文档编号获取模块1303,用于根据第一词标识所对应的索引项或者对应的比特位序列数据块中与初始值不同的预设值所在的位置以确定第一词标识所对应的内部文档编号。
具体地,若第一词标识对应有索引项,其为低频词,则内部文档编号获取模块1303可用于根据其索引项来确定第一词标识所对应的内部文档编号。若索引项包括内部文档编号,则内部文档编号获取模块1303可用于直接将索引项所包括的内部文档编号作为确定的内部文档编号。若索引项包括当前索引项与前一个索引项各自对应的内部文档编号的差值,则内部文档编号获取模块1303可用于根据第一词标识所对应的第一个索引项以及从第二个索引项开始记录的差值来确定每个索引项所对应的内部文档编号。若第一词标识对应有比特位序列数据块,其为高频词,则内部文档编号获取模块1303还可以根据该第一词标识所对应的比特位序列数据块中预设值所在的比特位的位置来确定内部文档编号,该预设值不同于该比特位序列数据块中的初始值。
对于低频词,第一词标识和第二词标识所对应的索引项通过上述文档索引建立装置900,采用上述各个实施例的文档索引建立方法生成,追加记录在词标识所对应的索引项存储区中。这样第一词标识和第二词标识所对应的索引项自然分别按照用来生成其索引项的内部文档编号的升序顺序而存储。对于高频词,则第一词标识和第二词标识所对应的各自的比特位序列数据块中的预设值自然也是按照内部文档编号的升序顺序来记录的。
判断模块1304,用于判断第二词标识所对应的比特位序列数据块中确定的内部文档编号所对应的比特位是否为预设值。
返回模块1305,用于当判断模块判断为是时获取确定的内部文档编号所对应的全局文档标识和/或文档内容并返回。具体地,返回模块1305用于在确定的内部文档编号同时与第一词标识和第二词标识所对应的索引项匹配时,将其全局文档标识,或者其文档内容,或者全局文档标识以及其文档内容返回给检索侧。返回模块1305还用于在确定的内部文档编号与至少一个第二词标识所对应的索引项不匹配时,直接舍弃该内部文档标识。返回模块1305还用于在所有确定的内部文档编号都不能够与每个第二词标识所对应的索引项匹配时,返回未检索到与查询字符串匹配的文档的消息,以提示用户没有检索到与查询字符串匹配的文档。
上述文档检索装置1300,对查询字符串分词以获得切分词的集合以及相应的词标识的集合,将其中的一个切分词作为基准词,通过判断其它切分词的比特位序列数据块中与确定的内部文档编号所对应的比特位是否为与初始值不同的预设值,就可以快速判断出其文档是否存在于其索引项,提高检索效率。而且在录入新的文档时,只要将对应递增的内部文档编号新生成的索引项追加在已有的索引项之后就可以建立新的索引项,不需要按照其全局文档标识重排序,使得文档索引的建立和文档的检索可以同时进行,保证了检索性能。
在一个实施例中,所述判断模块1304还用于根据预设词频数据或预设高频词表或预设低频词表判断所述第二词标识所对应的词是高频词还是低频词;若是高频词则判断所述第二词标识所对应的比特位序列数据块中所述确定的内部文档编号所对应的比特位是否为与初始值不同的预设值;若是低频词则判断所述确定的内部文档编号是否与所述第二词标识所对应的索引项匹配。且返回模块1305还用于当判定所述确定的内部文档编号与所述第二词标识所对应的索引项匹配时获取所述确定的内部文档编号所对应的全局文档标识和/或文档内容并返回给检索侧。返回模块1305还用于当判定所述确定的内部文档编号与所述第二词标识所对应的索引项不匹配时向检索侧返回未检索到与查询字符串匹配的文档的消息。
在一个实施例中,初始值为数值0,预设值为数值1。如图14所示,判断模块1304包括:计算模块1304a和判断执行模块1304b。
计算模块1304a,用于获取第二词标识所对应的比特位序列数据块中确定的内部文档编号所对应的字节;取确定的内部文档编号的低三位作为中间值;将获取的字节和中间值进行按位与运算,获得第二词标识所对应的比特位序列数据块中确定的内部文档编号所对应的比特位数值。具体地,计算模块1304a用于采用上述公式(2)来计算第二词标识所对应的比特位序列数据块中对应于上述确定的内部文档编号的比特位数值。
判断执行模块1304b,用于判断比特位数值是否为数值1。具体地,判断执行模块1304b用于判断计算出的比特位数值是数值0还是数值1。若比特位数值为数值0则表示确定的内部文档编号与第二词标识所对应的索引项不匹配;若比特位数值为数值1则表示确定的内部文档编号与第二词标识所对应的索引项匹配。
本实施例可以实现快速判断确定的内部文档编号与第二词标识所对应的索引项是否匹配,提高文档检索效率。
如图15所示,在一个实施例中,该文档检索装置1300还包括:预设值总数量确定模块1306和文档相关信息数据查找模块1307。
预设值总数量确定模块1306,用于确定第二词标识所对应的比特位序列数据块中确定的内部文档编号所对应的比特位之前的预设值总数量。
文档相关信息数据查找模块1307,用于根据确定的数量预设值总数量以从对应于第二词标识而顺序记录的文档相关信息数据集合中获取对应于确定的内部文档编号的文档相关信息数据并返回。
具体地,第二词标识所对应的比特位序列数据块中的每个预设值,分别对应于文档相关信息数据存储区中的一个文档相关信息数据,并且顺序一致,这样通过确定该比特位序列数据块中确定的内部文档编号所对应的比特位之前的预设值总数量,就可以据之从第二词标识所对应的文档相关信息数据存储区获取相应的文档相关信息数据。
本实施例中,考虑到建立大量分档的索引后,相应的比特位序列数据块会很长,实时统计会影响检索性能,因此通过将统计的数量记录在计数块存储区的计数块中,检索时就可以快速获取统计的数量,进而根据内部文档编号快速确定索引项,提高文档检索效率。
如图16所示,在一个实施例中,预设值总数量确定模块1306包括:计数块确定模块1306a、第一统计数量获取模块1306b、第二统计数量获取模块1306c和预设值总数量计算模块1306d。
计数块确定模块1306a,用于根据确定的内部文档编号而从第二词标识所对应的顺序记录的计数块集合中确定当前计数块的前一计数块。其中,当前计数块是指确定的内部文档编号所对应的计数块,当前计数块所对应的预设数量的正整数倍大于该确定的内部文档编号,而该前一计数块所对应的预设数量的正整数倍则小于该确定的内部文档编号。
第一统计数量获取模块1306b,用于获取该前一计数块所记录的第二词标识所对应的比特位序列数据块中自首位到该前一计数块所对应的预设数量的正整数倍处的比特位中预设值的第一统计数量。具体地,第一统计数量获取模块1306b用于获取该前一计数块所记录的数值作为第一统计数量,该第一统计数量是指第二词标识所对应的比特位序列数据块中自首位到该前一计数块所对应的预设数量的正整数倍处的所有比特位的范围内统计的预设值的数量。
第二统计数量获取模块1306c,用于获取第二词标识所对应的比特位序列数据块中自预设数量的正整数倍处的比特位到确定的内部文档编号所对应的比特位之前的预设值的第二统计数量。具体地,第二统计数量获取模块1306c用于对于第二词标识所对应的比特位序列数据块,获取其中自该前一计数块所对应的预设数量的正整数倍处这一比特位位置开始,到上述确定的内部文档编号所对应的比特位之前这一比特位范围内,统计预设值的数量作为第二统计数量。
预设值总数量计算模块1306d,用于根据第一统计数量和第二统计数量的和确定预设值总数量。
在一个具体的实施例中,预设值总数量确定模块1306用于利用上述公式(3)来计算预设值总数量。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (22)
1.一种文档索引建立方法,所述方法包括:
将具有全局文档标识的文档的文本信息进行分词以获得所述文本信息中出现的词以及相应的词标识;
获取自建编号作为对应于所述全局文档标识的内部文档编号,并将所述自建编号自增预设步长值后保存;
根据预设词频数据或预设高频词表或预设低频词表判断所述文本信息中出现的词是高频词还是低频词;
若是高频词,将所述词标识所对应的比特位序列数据块中对应所述内部文档编号的比特位从初始值变更为与所述初始值不同的预设值;
若是低频词,根据所述内部文档编号生成索引项,并将所述索引项追加记录在所述词标识所对应的索引项存储区。
2.根据权利要求1所述的方法,其特征在于,所述初始值为数值0,所述预设值为数值1;所述将所述词标识所对应的比特位序列数据块中对应所述内部文档编号的比特位从初始值变更为与所述初始值不同的预设值,包括:
获取所述内部文档编号所对应的比特位序列数据块中的字节;
获取所述内部文档编号的二进制低三位,或者以十进制数值8为模计算所述内部文档编号的第一余数;
将数值1按照所述获取的二进制低三位或者所述第一余数左移后,再与所述获取的字节进行按位或运算,并将运算结果赋值给所述内部文档编号所对应的比特位序列数据块中的字节。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:对于所述比特位序列数据块,每隔预设数量的比特位统计自首位到预设数量的正整数倍处的比特位中预设值的数量,并以计数块为单位追加记录在所述词标识所对应的计数块存储区中。
4.根据权利要求1所述的方法,其特征在于,所述初始值为数值0,所述预设值为数值1;所述方法还包括:
以预设数量为模而计算所述内部文档编号的第二余数;
当所述第二余数为数值0时,统计所述比特位序列数据块中在所述内部文档编号所对应的比特位之前的数值1的数量;
将所述统计的数量以计数块为单位追加记录在所述词标识所对应的计数块存储区中。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
根据所述出现的词和所述文本信息生成对应于所述出现的词的文档相关信息数据,并追加记录在所述词标识所对应的文档相关信息数据存储区中。
6.一种文档检索方法,所述方法包括:
对查询字符串进行分词以获得切分词的集合以及相应的词标识的集合;
在所述词标识的集合中确定第一词标识,并将所述词标识的集合中除去所述第一词标识的词标识作为第二词标识;
根据所述第一词标识所对应的索引项或者对应的比特位序列数据块中与初始值不同的预设值所在的位置以确定所述第一词标识所对应的内部文档编号;
根据预设词频数据或预设高频词表或预设低频词表判断所述第二词标识所对应的词是高频词还是低频词;
若是高频词,判断所述第二词标识所对应的比特位序列数据块中所述确定的内部文档编号所对应的比特位是否为所述预设值;若是,则
获取所述确定的内部文档编号所对应的全局文档标识和/或文档内容并返回;
若是低频词,判断所述确定的内部文档编号是否与所述第二词标识所对应的索引项匹配;若匹配,则
获取所述确定的内部文档编号所对应的全局文档标识和/或文档内容并返回。
7.根据权利要求6所述的方法,其特征在于,所述在所述词标识的集合中确定第一词标识,包括:
将所述词标识的集合中对应的比特位序列数据块中的预设值数量最少的词标识作为第一词标识;或者,
将所述词标识的集合中对应最少索引项的词标识作为第一词标识。
8.根据权利要求6所述的方法,其特征在于,所述初始值为数值0,所述预设值为数值1;所述判断所述第二词标识所对应的比特位序列数据块中所述确定的内部文档编号所对应的比特位是否为所述预设值,包括:
获取所述第二词标识所对应的比特位序列数据块中所述确定的内部文档编号所对应的字节;
取所述确定的内部文档编号的低三位作为中间值;
将所述获取的字节和所述中间值进行按位与运算,获得所述第二词标识所对应的比特位序列数据块中所述确定的内部文档编号所对应的比特位数值;
判断所述比特位数值是否为数值1。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括:
确定所述第二词标识所对应的比特位序列数据块中所述确定的内部文档编号所对应的比特位之前的预设值总数量;
根据所述确定的数量预设值总数量以从对应于所述第二词标识而顺序记录的文档相关信息数据集合中获取对应于所述确定的内部文档编号的文档相关信息数据并返回。
10.根据权利要求9所述的方法,其特征在于,所述确定所述第二词标识所对应的比特位序列数据块中所述确定的内部文档编号所对应的比特位之前的预设值总数量,包括:
根据所述确定的内部文档编号而从所述第二词标识所对应的顺序记录的计数块集合中确定当前计数块的前一计数块;
获取该前一计数块所记录的所述第二词标识所对应的比特位序列数据块中自首位到该前一计数块所对应的预设数量的正整数倍处的比特位中预设值的第一统计数量;
获取所述第二词标识所对应的比特位序列数据块中自所述预设数量的正整数倍处的比特位到所述确定的内部文档编号所对应的比特位之前的预设值的第二统计数量;
根据所述第一统计数量和所述第二统计数量的和确定预设值总数量。
11.一种文档索引建立装置,其特征在于,所述装置包括:
分词模块,用于将具有全局文档标识的文档的文本信息进行分词以获得所述文本信息中出现的词以及相应的词标识;
内部文档编号生成模块,用于获取自建编号作为对应于所述全局文档标识的内部文档编号,并将所述自建编号自增预设步长值后保存;
判断模块,用于根据预设词频数据或预设高频词表或预设低频词表判断所述文本信息中出现的词是高频词还是低频词;
比特位序列数据块操作模块,用于当判定所述文本信息中出现的词是高频词时将所述词标识所对应的比特位序列数据块中对应所述内部文档编号的比特位从初始值变更为与所述初始值不同的预设值;
索引项生成模块,用于当判定所述文本信息中出现的词是低频词时根据所述内部文档编号生成索引项,并将所述索引项追加记录在所述词标识所对应的索引项存储区。
12.根据权利要求11所述的装置,其特征在于,所述初始值为数值0,所述预设值为数值1;所述比特位序列数据块操作模块还用于获取所述内部文档编号所对应的比特位序列数据块中的字节;获取所述内部文档编号的二进制低三位,或者以十进制数值8为模计算所述内部文档编号的第一余数;将数值1按照所述获取的二进制低三位或者所述第一余数左移后,再与所述获取的字节进行按位或运算,并将运算结果赋值给所述内部文档编号所对应的比特位序列数据块中的字节。
13.根据权利要求11所述的装置,其特征在于,所述装置还包括:
计数模块,用于对于所述比特位序列数据块,每隔预设数量的比特位统计自首位到预设数量的正整数倍处的比特位中预设值的数量,并以计数块为单位追加记录在所述词标识所对应的计数块存储区中。
14.根据权利要求11所述的装置,其特征在于,所述初始值为数值0,所述预设值为数值1;所述装置还包括:计数模块,包括:
余数计算模块,用于以预设数量为模而计算所述内部文档编号的第二余数;
统计模块,用于当所述第二余数为数值0时,统计所述比特位序列数据块中在所述内部文档编号所对应的比特位之前的数值1的数量;
记录模块,用于将所述统计的数量以计数块为单位追加记录在所述词标识所对应的计数块存储区中。
15.根据权利要求11-14中任一项所述的装置,其特征在于,所述装置还包括:
文档相关信息数据处理模块,用于根据所述出现的词和所述文本信息生成对应于所述出现的词的文档相关信息数据,并追加记录在所述词标识所对应的文档相关信息数据存储区中。
16.一种文档检索装置,其特征在于,所述装置包括:
查询字符串处理模块,用于对查询字符串进行分词以获得切分词的集合以及相应的词标识的集合;
词标识确定模块,用于在所述词标识的集合中确定第一词标识,并将所述词标识的集合中除去所述第一词标识的词标识作为第二词标识;
内部文档编号获取模块,用于根据所述第一词标识所对应的索引项或者对应的比特位序列数据块中与初始值不同的预设值所在的位置以确定所述第一词标识所对应的内部文档编号;
判断模块,用于根据预设词频数据或预设高频词表或预设低频词表判断所述第二词标识所对应的词是高频词还是低频词;
所述判断模块还用于若是高频词则判断所述第二词标识所对应的比特位序列数据块中所述确定的内部文档编号所对应的比特位是否为所述预设值;
返回模块,用于当所述判断模块判断为是时获取所述确定的内部文档编号所对应的全局文档标识和/或文档内容并返回;
所述判断模块还用于若是低频词则判断所述确定的内部文档编号是否与所述第二词标识所对应的索引项匹配;
所述返回模块还用于当判定所述确定的内部文档编号与所述第二词标识所对应的索引项匹配时获取所述确定的内部文档编号所对应的全局文档标识和/或文档内容并返回。
17.根据权利要求16所述的装置,其特征在于,所述词标识确定模块还用于将所述词标识的集合中对应的比特位序列数据块中的预设值数量最少的词标识作为第一词标识;或者,将所述词标识的集合中对应最少索引项的词标识作为第一词标识。
18.根据权利要求16所述的装置,其特征在于,所述初始值为数值0,所述预设值为数值1;所述判断模块包括:
计算模块,用于获取所述第二词标识所对应的比特位序列数据块中所述确定的内部文档编号所对应的字节;取所述确定的内部文档编号的低三位作为中间值;将所述获取的字节和所述中间值进行按位与运算,获得所述第二词标识所对应的比特位序列数据块中所述确定的内部文档编号所对应的比特位数值;
判断执行模块,用于判断所述比特位数值是否为数值1。
19.根据权利要求16所述的装置,其特征在于,所述装置还包括:
预设值总数量确定模块,用于确定所述第二词标识所对应的比特位序列数据块中所述确定的内部文档编号所对应的比特位之前的预设值总数量;
文档相关信息数据查找模块,用于根据所述确定的数量预设值总数量以从对应于所述第二词标识而顺序记录的文档相关信息数据集合中获取对应于所述确定的内部文档编号的文档相关信息数据并返回。
20.根据权利要求19所述的装置,其特征在于,所述预设值总数量确定模块包括:
计数块确定模块,用于根据所述确定的内部文档编号而从所述第二词标识所对应的顺序记录的计数块集合中确定当前计数块的前一计数块;
第一统计数量获取模块,用于获取该前一计数块所记录的所述第二词标识所对应的比特位序列数据块中自首位到该前一计数块所对应的预设数量的正整数倍处的比特位中预设值的第一统计数量;
第二统计数量获取模块,用于获取所述第二词标识所对应的比特位序列数据块中自所述预设数量的正整数倍处的比特位到所述确定的内部文档编号所对应的比特位之前的预设值的第二统计数量;
预设值总数量计算模块,用于根据所述第一统计数量和所述第二统计数量的和确定预设值总数量。
21.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10中任一项所述方法的步骤。
22.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410642428.6A CN105589894B (zh) | 2014-11-13 | 2014-11-13 | 文档索引建立方法和装置、文档检索方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410642428.6A CN105589894B (zh) | 2014-11-13 | 2014-11-13 | 文档索引建立方法和装置、文档检索方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105589894A CN105589894A (zh) | 2016-05-18 |
CN105589894B true CN105589894B (zh) | 2020-05-29 |
Family
ID=55929477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410642428.6A Active CN105589894B (zh) | 2014-11-13 | 2014-11-13 | 文档索引建立方法和装置、文档检索方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105589894B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649736B (zh) * | 2016-12-23 | 2020-04-17 | 成都信息工程大学 | 一种通用数据库中自动编号生成方法 |
CN106897409A (zh) * | 2017-02-16 | 2017-06-27 | 北京致远互联软件股份有限公司 | 数据分库存储方法及装置 |
CN110019985B (zh) * | 2017-12-29 | 2021-09-24 | 阿里巴巴(中国)有限公司 | 索引文件的建立、查询方法及装置 |
CN109271507B (zh) * | 2018-09-21 | 2022-02-08 | 长沙学院 | 处理子串信息的方法、计算机数据管理系统、舆情分析系统、社会网络分析系统 |
CN111414367A (zh) * | 2020-03-31 | 2020-07-14 | 中国建设银行股份有限公司 | 获取参数的方法和装置 |
CN114117172B (zh) * | 2020-08-28 | 2024-10-18 | 北京搜狗科技发展有限公司 | 一种倒排索引的优化方法、装置及电子设备 |
CN113393296B (zh) * | 2021-06-16 | 2024-12-31 | 北京沃东天骏信息技术有限公司 | 一种数据关系的表示方法、装置、设备及存储介质 |
CN114185890B (zh) * | 2021-12-09 | 2022-11-01 | 北京航星永志科技有限公司 | 一种数据库检索方法、装置、存储介质及电子设备 |
CN114299505A (zh) * | 2021-12-23 | 2022-04-08 | 上海浦东发展银行股份有限公司 | 一种名单扫描方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102637204A (zh) * | 2012-03-16 | 2012-08-15 | 浙江大学城市学院 | 一种基于互索引结构的文本查询方法 |
CN103853794A (zh) * | 2012-12-07 | 2014-06-11 | 北京瑞奥风网络技术中心 | 一种基于部件关联的行人检索方法 |
CN104008395A (zh) * | 2014-05-20 | 2014-08-27 | 中国科学技术大学 | 一种基于人脸检索的不良视频智能检测方法 |
-
2014
- 2014-11-13 CN CN201410642428.6A patent/CN105589894B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102637204A (zh) * | 2012-03-16 | 2012-08-15 | 浙江大学城市学院 | 一种基于互索引结构的文本查询方法 |
CN103853794A (zh) * | 2012-12-07 | 2014-06-11 | 北京瑞奥风网络技术中心 | 一种基于部件关联的行人检索方法 |
CN104008395A (zh) * | 2014-05-20 | 2014-08-27 | 中国科学技术大学 | 一种基于人脸检索的不良视频智能检测方法 |
Non-Patent Citations (1)
Title |
---|
搜索引擎中索引技术研究与实现;吴宝贵;《中国优秀硕士学位论文全文数据库信息科技辑》;20090215(第2期);第I138-783页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105589894A (zh) | 2016-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105589894B (zh) | 文档索引建立方法和装置、文档检索方法和装置 | |
CN102063446B (zh) | 一种建立倒排索引的方法及倒排索引装置 | |
US8190613B2 (en) | System, method and program for creating index for database | |
US9626434B2 (en) | Systems and methods for generating and using aggregated search indices and non-aggregated value storage | |
EP3422209B1 (en) | Character string distance calculation method and device | |
CN112463774B (zh) | 文本数据的去重方法、设备及存储介质 | |
CN103699585A (zh) | 文件的元数据存储以及文件恢复的方法、装置和系统 | |
CN108280197B (zh) | 一种识别同源二进制文件的方法及系统 | |
CN107169011B (zh) | 基于人工智能的网页原创性识别方法、装置及存储介质 | |
CN102867049A (zh) | 一种基于单词查找树实现的汉语拼音快速分词方法 | |
CN114036371A (zh) | 搜索词推荐方法、装置、设备和计算机可读存储介质 | |
CN105404677A (zh) | 一种基于树形结构的检索方法 | |
CN105224624A (zh) | 一种实现倒排链快速归并的方法和装置 | |
CN105426490B (zh) | 一种基于树形结构的索引方法 | |
CN110019829A (zh) | 数据属性确定方法、装置 | |
CN106569986A (zh) | 字符串替换方法和装置 | |
CN107169065B (zh) | 一种特定内容的去除方法和装置 | |
CN113641783B (zh) | 基于关键语句的内容块检索方法、装置、设备和介质 | |
JP3859044B2 (ja) | インデクス作成方法および検索方法 | |
CN111444413B (zh) | 一种数据查询方法、装置和计算设备 | |
CN106372089B (zh) | 确定词语位置的方法及装置 | |
US7840583B2 (en) | Search device and recording medium | |
Malki | Comprehensive study and comparison of information retrieval indexing techniques | |
US9864765B2 (en) | Entry insertion apparatus, method, and program | |
CN103810209B (zh) | 一种保存数据的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |