CN104636384B - 一种处理文档的方法及装置 - Google Patents
一种处理文档的方法及装置 Download PDFInfo
- Publication number
- CN104636384B CN104636384B CN201310567401.0A CN201310567401A CN104636384B CN 104636384 B CN104636384 B CN 104636384B CN 201310567401 A CN201310567401 A CN 201310567401A CN 104636384 B CN104636384 B CN 104636384B
- Authority
- CN
- China
- Prior art keywords
- document
- word
- internal
- code
- leaf node
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/93—Document management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种处理文档的方法及装置,涉及信息搜索技术领域,可以提高新文档入库的实时性。本发明实施例通过对文档中的词语进行抽取处理,获得顺排信息,所述顺排信息包括文档编号以及所述文档中的各个词语的编号;为所述文档分配内部文档编号;将所述顺排信息中的各个词语的编号添加对应的所述内部文档编号,并将所述各个词语的编号以及所述内部文档编号的对应关系保存在数据库中。本发明适于对新文档入库保存时采用。
Description
技术领域
本发明涉及信息搜索技术领域,尤其涉及一种处理文档的方法及装置。
背景技术
用户对网页进行检索时,一般对网页的时新性要求较高。现有技术中对新文档的处理通常采用以下方式:当新文档累积到一定程度之后与旧文档进行合并,全部文档重新建立索引;或者,在新文档入库时,将新索引累积到一定的文档量时追加到旧索引后边。
然而,采用现有技术处理新文档时,需要对新文档进行累积,当新文档累积到一定程度之后才建立索引,或者将新索引累积到一定的文档量后追加到旧索引后面,导致新文档不能及时地被用户检索到,实时性较差。
发明内容
本发明的实施例提供一种处理文档的方法及装置,可以提高新文档入库的实时性。
第一方面,本发明的实施例提供一种处理文档的方法,包括:
对文档中的词语进行抽取处理,获得顺排信息,所述顺排信息包括文档编号以及所述文档中的各个词语的编号;
为所述文档分配内部文档编号;
将所述顺排信息中的各个词语的编号添加对应的所述内部文档编号,并将所述各个词语的编号以及所述内部文档编号的对应关系保存在数据库中。
第二方面,本发明的实施例提供一种处理文档的装置,包括:
抽取单元,用于对文档中的词语进行抽取处理,获得顺排信息,所述顺排信息包括文档编号以及所述文档中的各个词语的编号;
分配单元,用于为所述文档分配内部文档编号;
添加单元,用于将所述顺排信息中的各个词语的编号添加对应的所述内部文档编号;
保存单元,用于将所述各个词语的编号以及所述内部文档编号的对应关系保存在数据库中。
本发明实施例提供一种处理文档的方法及装置,通过对文档中的词语进行抽取处理,获得顺排信息,所述顺排信息包括文档编号以及所述文档中的各个词语的编号;为所述文档分配内部文档编号;将所述顺排信息中的各个词语的编号添加对应的所述内部文档编号,并将所述各个词语的编号以及所述内部文档编号的对应关系保存在数据库中。与现有技术中处理新文档时,需要对新文档进行累积,当新文档累积到一定程度之后才建立索引或者将新索引累积到一定的文档量后追加到旧索引后面,导致新文档不能及时地被用户检索到,实时性较差相比,本发明实施例可以对单篇文档执行入库保存,从而可以提高文档入库的实时性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种处理文档的方法的流程图;
图2为本发明实施例提供的另一种处理文档的方法的流程图;
图3为本发明实施例提供的一种B+树示意图;
图4为本发明实施例提供的另一种B+树示意图;
图5为本发明实施例提供的另一种B+树示意图;
图6为本发明实施例提供的另一种处理文档的方法的流程图;
图7为本发明实施例提供的一种处理文档的装置的框图;
图8为本发明实施例提供的另一种处理文档的装置的框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例提供一种处理文档的方法,该方法的执行主体可以为服务器。如图1所示,该方法包括:
步骤101,对文档中的词语进行抽取处理,获得顺排信息。
所述顺排信息包括文档编号以及所述文档中的各个词语的编号。例如,顺排信息可以为docid:wordid1,wordid2,wordid3…wordidN,其中,docid表示文档对应的文档编号,wordid1表示文档中第一个词语对应的词语的编号,N表示文档中词语的数量。
可选的,本步骤包括:离线下载新网页,获得对应的文档;
根据所述文档的网址,获得所述文档编号;
对所述文档中的词语进行抽取处理,获得各个词语;
根据所述各个词语,获得所述各个词语的编号;
根据所述文档编号以及所述各个词语的编号,获得顺排信息。
步骤102,为所述文档分配内部文档编号。
可选的,对文档入库保存之前首先对文档进行转发处理,根据预设的文档转发规则将文档转发到一台机器上,由此机器执行入库操作。此机器为服务器中的一台机器,服务器中包括多台机器,可以为每一台机器顺序编号,当接收到文档的顺排信息之后,将不同的文档转发到不同的机器上进行并行处理,以加快文档入库的速度。
内部文档编号为在单机内部使用的文档编号,不同的机器内的内部文档编号可以相同。每台机器内部存储一个初始化为0的全局变量,每接收到一篇新的文档之后,分配当前的全局变量作为文档入库的内部文档编号,然后全局变量自增1。例如,当前的全局变量为00130,接收到一篇新的文档之后,将00130分配给新的文档,然后全局变量变为00131,再接收到一篇新的文档之后,将00131分配给再次接收到的新的文档,然后全局变量变为00132,依次累加。
本发明实施例在文档入库之前为文档分配内部文档编号,可以使得***B+树的数据单调有序,B+树***过程变成是顺序写入数据,因此不会出现B+树中的叶子节点重排序或者***的情况,降低操作难度,使得入库的速度得到很大的提升。
步骤103,将所述顺排信息中的各个词语的编号添加对应的所述内部文档编号,并将所述各个词语的编号以及所述内部文档编号的对应关系保存在数据库中。
每个词语的编号对应一棵B+树的倒排索引,所述倒排索引用于通过一个词语编号定位一个内部文档编号集,所述内部文档编号集中对应的每篇文档包括所述词语编号对应的词语。例如,倒排索引可以为wordid1:00019、00108…00130等,其中,wordid1表示词语的编号,00019、00108…00130构成内部文档编号集,包括多个内部文档编号,每个内部文档编号对应一个文档,此文档中包括wordid1。
当用户检索信息时,输入查询字串,通过为查询字串分配词语的编号,并通过词语的编号可以快速定位到一个内部文档编号集,通过内部文档编号集可以获得检索的文档。可选的,对接收到的用户的查询字串进行预处理,获得所述查询字串中包括的各个词语的编号;根据所述各个词语的编号,获取所述各个词语的编号对应的内部文档编号中相同的内部文档编号,将所述相同的内部文档编号作为目标内部文档编号;根据内部文档编号到文档编号的映射关系,确定所述目标内部文档编号对应的文档编号,并输出所述文档编号对应的文档。
本发明实施例提供一种处理文档的方法,通过对文档中的词语进行抽取处理,获得顺排信息,所述顺排信息包括文档编号以及所述文档中的各个词语的编号;为所述文档分配内部文档编号;将所述顺排信息中的各个词语的编号添加对应的所述内部文档编号,并将所述各个词语的编号以及所述内部文档编号的对应关系保存在数据库中,使得可以对单篇文档执行入库保存,从而可以提高文档入库的实时性。
本发明实施例提供一种处理文档的方法,该方法的执行主体可为服务器,该方法可以分为两个流程,一个为文档入库的流程,一个为用户实时检索的流程,如图2所示,该文档入库的流程具体包括:
步骤201,离线下载新网页,获得对应的文档。
当网站的网页有更新时,或者添加了新的网页时,可以下载该网页,获得网页对应的文档,以便对文档进行进一步处理。
步骤202,根据所述文档的网址,获得所述文档编号。
可选的,根据文档的网址,计算文档对应的消息摘要算法第5版(Message-DigestAlgorithm5,MD5)值,将文档对应的MD5值作为文档编号docid。可选的,文档的网址可以为统一资源定位符(Uniform Resource Locator,URL)。MD5为一套验证程序,是为了保证文件的正确性,防止一些人盗用程序加些木马或者篡改版权等,设计的一套验证程序。每个文件都可以用MD5验证程序算出一个固定的MD5值。一个文档唯一对应一个MD5值。
步骤203,对所述文档中的词语进行抽取处理,获得各个词语。
对文档中的词语进行抽取处理时,可以去掉无效的词语、重复的词语仅保留一个等。
步骤204,根据所述各个词语,获得所述各个词语的编号。
可选的,根据各个词语,计算词语对应的MD5值,将词语对应的MD5值作为词语的编号。每个词语对应一个MD5值。
步骤205,根据所述文档编号以及所述各个词语的编号,获得顺排信息。
顺排信息包括文档编号以及所述文档中的各个词语的编号。例如,顺排信息可以为docid:wordid1,wordid2,wordid3…wordidN,其中,docid表示文档对应的文档编号,wordid1表示文档中第一个词语对应的词语的编号,N表示文档中词语的数量。
步骤206,根据文档转发规则,将不同的文档转发到不同的机器上,以便进一步处理。
可选的,对文档入库保存之前首先对文档进行转发处理,根据预设的文档转发规则将文档转发到一台机器上,由此机器执行入库操作。此机器为服务器中的一台机器,服务器中可以包括多台机器,可以为每一台机器顺序编号,当接收到文档的顺排信息之后,将不同的文档转发到不同的机器上进行并行处理,以加快文档入库的速度。例如,服务器中包括10台机器,编号分别为0-9,对文档进行模10计算,例如获得的编号为6,则将此文档转发到编号为6的机器上。若当前仅有一篇文档时,则编号为0,再接收到的文档可以编号为1,一直编号到9之后再从0开始重新编号,这样可以保证各台机器工作量相当,不会出现机器太忙或者太闲的情况,也保证了文档可以及时被处理。
步骤207,为所述文档分配内部文档编号。
所述内部文档编号inner-docid为根据一个初始化为0的全局变量获得的编号,当一个文档需要保存到数据库时,分配当前的全局变量为所述文档的内部文档编号,然后所述全局变量增加1。
通过每一台机器对文档编号重新分配内部文档编号,对文档入库时可以使得***B+树的数据单调有序,B+书的***过程变成顺序写入数据,不会对B+树中的叶子节点重新排序或者***。
步骤208,建立并保存所述内部文档编号到所述文档编号的映射关系。
建立并保存inner_docid->docid的映射关系,分配一段连续的内存空间存储inner_docid对应的,由于inner_docid有序且从0开始分配,因此直接通过指针和inner_docid做为偏移,可以直接定位到对应的docid。
docid=f(inner_docid)=inner_docid_2_dcoid[inner_docid]
步骤209,建立并保存所述文档编号到所述内部文档编号的映射关系。
建立并保存docid->inner_docid的映射关系,可以采用传统的哈希链表存储docid对应的inner_docid。
由于文档编号采用MD5值表示,当文档相同时,则MD5值也相同。在建立docid->inner_docid的映射关系时,首先确定之前保存的docid->inner_docid的映射关系中是否存在与当前文档编号重复的文档编号,当出现重复文档编号时,则将哈希链表中已经存在的docid对应的inner_docid更新为新分配的inner_docid;并将inner_docid_2_dcoid[inner_docid]对应的值为0,以标识docid的结果不存在。
步骤210,依次获取所述顺排信息中的第一词语的编号,所述第一词语为所述各个词语中的任一词语。
可选的,例如,顺排信息为docid:wordid1,wordid2,wordid3…wordidN,则第一次获取wordid1,将wordid1***到对应的B+树之后,再取wordid2,将wordid2***到对应的B+树中,依次取各词语,直至将当前文档中所有的词语都***到对应的B+树中。
步骤211,判断所述第一词语的编号对应的B+树叶子节点是否已满。
可选的,在本步骤之前还可以包括判断是否存在第一词语的编号对应的B+树,当存在第一词语的编号对应的B+树时,则执行步骤211,当不存在第一词语的编号对应的B+树时,则为第一词语的编号分配一块空间,建立第一词语的编号对应的B+树。
B+树包括根节点、叶子节点,如图3所示的示意图,B+树包括一个根节点,多个叶子节点,叶子节点中包括叶子节点的编号以及内部文档编号。例如,第一个叶子节点的编号为1,内部文档编号为000012,第二个叶子节点的编号为2,内部文档编号为000019等等。
步骤212,当所述B+树的叶子节点未满时,直接在当前叶子节点中添加所述内部文档编号。
如图3所示,叶子节点共有10个,其中前9个叶子节点都有对应的内部文档编号,此时,可以直接在第10个叶子节点中添加内部文档编号。
步骤213,当所述B+树的叶子节点已满时,判断当前层叶子节点是否已满。
如图3所示的示意图,B+树中10个叶子节点都已满,此时没有可以直接添加对应的内部文档编号的叶子节点,则判断根节点所在的层的叶子节点是否已满。
步骤214,当所述当前层叶子节点未满时,添加新的叶子节点,并在所述新的叶子节点中添加所述内部文档编号。
如图4所示的示意图,B+树中的根节点为[1,20],因此可以有20个叶子节点,此时可以直接在此根节点下添加新的叶子节点,例如,添加第十一个叶子节点,当存在新的叶子节点之后,可以在叶子节点后添加内部文档编号,例如,添加内部文档编号000130。
步骤215,当所述当前层叶子节点已满时,对所述B+树增加一层,并添加新的中间节点以及新叶子节点,并在所述新叶子节点中添加所述内部文档编号,所述新的中间节点连接所述当前层叶子节点以及所述新叶子节点。
如图5所示的示意图,B+树的根节点为[1,20],当前所有的叶子节点都已满,当需要再添加新的叶子节点时,则需要为B+树增加一层,如图5所示,添加新的中间节点,以及叶子节点,第二层的中间节点[1,20]为原B+树,原B+树根节点指向的首地址作为当前B+树根节点的第一个子节点,然后添加新的中间节点和叶子节点。将当前B+树根节点中添加[21,40],并在第二层中添加新的中间节点[21,40],以及[21,40]的叶子节点。此时可以在新添加的叶子节点中添加内部文档编号,例如,叶子节点为21,内部文档编号为000138。
动态分层过程中,新分出层次的第一个节点指向原来根节点指向的地址,然后继续写入新的数据,在拆分过程中由于只是增加节点,因此无需进行锁操作。
需要说明的是,较常变化的网页可能经常要进行更新,因此入库文档可能存在重复现象,因此为排除搜索到重复文档,需要对B+树进行删除再***的操作。而本发明中,在重复文档入库时,对原来分配的inner_docid更新为新分配的inner_docid,然后再将新分配的inner_docid的值置0,即将原来的inner_docid做删除标记,而不进行真正的B+树删除,这样可以节省较复杂的B+树删除操作。由于网页中重复文档比例较小,因此可以忽略此带来的空间损失。
步骤216,将所述各个词语的编号以及所述内部文档编号的对应关系保存在数据库中。
可选的,保存各个词语的编号对应的B+树。步骤212、214执行完成之后,执行此步骤。
如图6所示,用户实时检索的流程具体包括:
步骤601,接收用户输入的查询字串。
可选的,通过通用网关接口(Common Gateway Interface,CGI)接收到用户发送的查询字串。
步骤602,将所述查询字串进行纠错处理、单词切分处理,获得所述查询字串中包括的各个词语。
对查询字串进行纠错处理、同义词处理、单词切分等,例如将“我是中国人”切分为“我”“是”“中国人”。
步骤603,根据所述各个词语,计算所述各个词语的MD5值,将所述各个词语的MD5值作为所述各个词语的编号。
可选的,每一个词语唯一对应一个MD5值。
步骤604,分别根据所述各个词语的编号,查询所述各个词语的编号对应的内部文档编号,获取所述各个词语的编号对应的B+树的倒排索引。
每个词语的编号对应一棵B+树的倒排索引,所述倒排索引用于通过一个词语编号定位一个内部文档编号集,所述内部文档编号集中对应的每篇文档包括所述词语编号对应的词语。例如,通过wordid1可以获得其对应的B+树的倒排索引,其中包括100个内部文档编号,每个内部文档编号对应的文档中都包括此wordid1。
需要说明的是,B+树可以保存在数据库中,也可以保存在内存中,本发明中不限定B+树保存的位置。
步骤605,根据各个所述倒排索引的索引长度,获取长度最短的倒排索引。
可选的,倒排索引的索引长度即包括的内部文档编号的数量,长度最短的倒排索引即包括的内部文档编号的数量最少的内部文档编号集。例如,词语“我”的编号对应的内部文档编号的数量为3000,词语“是”的编号对应的内部文档编号的数量为5000,词语“中国人”的编号对应的内部文档编号的数量为30。则此时可以将“中国人”的编号作为候选词,从而可以进一步选择其他的词语编号对应的内部文档编号,快速确定用户需要查询的文档。
当然,本发明实施例还可以选择任一个词语的编号对应的内部文档编号为候选词,并进一步选择其他的词语编号对应的内部文档编号,确定用户需要查询的文档。优选的,选择长度最短的倒排索引,节省文档检索时间。
步骤606,依次获取所述长度最短的倒排索引中的目标内部文档编号。
步骤607,判断除所述长度最短的倒排索引之外的所述倒排索引中是否都存在所述目标内部文档编号。
可选的,当除所述长度最短的倒排索引之外的所述倒排索引中至少一个倒排索引不存在所述目标内部文档编号时,获取下一个所述目标内部文档编号,即执行步骤606。
依次取出长度最短的倒排索引在B+树叶子节点上的各个内部文档编号,分别以各个内部文档编号作为关键词,对其他的词语的编号进行B+树检索,如果其他的词语的编号对应的内部文档编号中都存在此关键词时,则输出此关键词,当存在一个词语的编号对应的内部文档编号不存在此关键词时,则不输出此关键词。这样可以降低设备的工作量,提高检索速度。
例如,“中国人”的编号对应的内部文档编号分别为000012,000019、000100、000130…,将第一个内部文档编号000012最为关键词,查询其他词语的编号对应的内部文档编号中是否存在此内部文档编号,当其他词语的编号对应的内部文档编号中不都包括000012时,例如,“我”的编号对应的内部文档编号中包括000012,“是”的编号对应的内部文档编号中不包括000012,则此时选择下一个关键词000019,进一步判断其他词语的编号对应的内部文档编号中是否存在此内部文档编号。
步骤608,当除所述长度最短的倒排索引之外的所述倒排索引中都存在所述目标内部文档编号时,获取所述目标内部文档编号。
可选的,当其他词语的编号对应的内部文档编号中都存在此000012时,则说明000012对应的文档中存在“我”“是”“中国人”这几个词语,对用户来说此文档包括的用户的查询信息较多,因此精准度较高。
步骤609,根据内部文档编号到文档编号的映射关系,确定所述目标内部文档编号对应的文档编号,并输出所述文档编号对应的文档。
可选的,在文档入库之前,存储内部文档编号到文档编号的映射关系,以便检索文档时,可以根据内部文档编号到文档编号的映射关系查询到目标内部文档编号对应的文档编号,从而提供给用户。
本发明实施例提供一种处理文档的方法,可以实现以单篇文档为粒度,动态地追加索引信息,并在文档入库时,只是追加的操作,新增索引的数据不会影响到旧索引的数据,因此能够提供无锁的读取操作,另外,由于对文档分配内部文档编号,使得***B+树的数据单调有序,从而提高B+树***数据的速度。
本发明实施例提供一种处理文档的装置,该装置可以为服务器,如图7所示,该装置包括:抽取单元701,分配单元702,添加单元703,保存单元704。
抽取单元701,用于对文档中的词语进行抽取处理,获得顺排信息,所述顺排信息包括文档编号以及所述文档中的各个词语的编号;
分配单元702,用于为所述文档分配内部文档编号;
添加单元703,用于将所述顺排信息中的各个词语的编号添加对应的所述内部文档编号;
保存单元704,用于将所述各个词语的编号以及所述内部文档编号的对应关系保存在数据库中。
进一步可选的,如图7所示,所述抽取单元701,包括:下载模块7011,编号获取模块7012,抽取模块7013,顺排信息获取模块7014。
下载模块7011,用于离线下载新网页,获得对应的文档;
编号获取模块7012,用于根据所述文档的网址,获得所述文档编号;
抽取模块7013,用于对所述文档中的词语进行抽取处理,获得各个词语;
所述编号获取模块7012,还用于根据所述各个词语,获得所述各个词语的编号;
顺排信息获取模块7014,用于根据所述文档编号以及所述各个词语的编号,获得顺排信息。
进一步可选的,如图8所示,所述编号获取模块7012,用于:
根据所述文档的网址,计算所述文档的消息摘要算法第5版MD5值,并将所述文档的MD5值作为所述文档编号;
所述编号获取模块7012,还用于根据所述各个词语,计算所述各个词语的MD5值,并将所述各个词语的MD5值作为所述各个词语的编号。
可选的,所述内部文档编号为根据一个初始化为0的全局变量获得的编号,当一个文档需要保存到数据库时,分配当前的全局变量为所述文档的内部文档编号,然后所述全局变量增加1。
进一步可选的,在所述分配单元702为所述文档分配内部文档编号之后,所述装置,还包括:建立单元705。
建立单元705,用于建立所述内部文档编号到所述文档编号的映射关系;
所述保存单元704,还用于保存所述内部文档编号到所述文档编号的映射关系;所述保存单元704,用于:采用连续的内存空间存储所述文档编号到所述内部文档编号的映射关系;
可选的,每个词语的编号对应一棵B+树的倒排索引,所述倒排索引用于通过一个词语编号定位一个内部文档编号集,所述内部文档编号集中对应的每篇文档包括所述词语编号对应的词语。
进一步可选的,如图8所示,所述添加单元703,包括:获取模块7031,***模块7032。
获取模块7031,用于依次获取所述顺排信息中的第一词语的编号,所述第一词语为所述各个词语中的任一词语;
***模块7032,用于将所述内部文档编号***到所述第一词语的编号对应的B+树中。
进一步的,所述***模块7032,包括:
判断子模块,用于判断所述第一词语的编号对应的B+树的叶子节点是否已满;
添加子模块,用于当所述B+树的叶子节点未满时,直接在当前叶子节点中添加所述内部文档编号;
所述判断子模块,还用于当所述B+树的叶子节点已满时,判断当前层叶子节点是否已满;
所述添加子模块,还用于当所述当前层叶子节点未满时,添加新的叶子节点,并在所述新的叶子节点中添加所述内部文档编号;
所述添加子模块,还用于当所述当前层叶子节点已满时,对所述B+树增加一层,并添加新的中间节点以及新叶子节点,并在所述新叶子节点中添加所述内部文档编号,所述新的中间节点连接所述当前层叶子节点以及所述新叶子节点。
进一步可选的,如图8所示,所述装置,还包括:预处理单元706,获取单元707,确定单元708,输出单元709。
在保存单元704将将所述各个词语的编号以及所述内部文档编号的对应关系保存在数据库中之后,预处理单元706,用于对接收到的用户的查询字串进行预处理,获得所述查询字串中包括的各个词语的编号;
获取单元707,用于根据所述各个词语的编号,获取所述各个词语的编号对应的内部文档编号中相同的内部文档编号,将所述相同的内部文档编号作为目标内部文档编号;
确定单元708,用于根据内部文档编号到文档编号的映射关系,确定所述目标内部文档编号对应的文档编号;
输出单元709,用于输出所述文档编号对应的文档。
进一步可选的,如图8所示,所述预处理单元706,包括:接收模块7061,预处理模块7062,计算模块7063。
接收模块7061,用于接收用户输入的查询字串;
预处理模块7062,用于将所述查询字串进行纠错处理、单词切分处理,获得所述查询字串中包括的各个词语;
计算模块7063,用于根据所述各个词语,计算所述各个词语的MD5值,将所述各个词语的MD5值作为所述各个词语的编号。
可选的,每个词语的编号对应一棵B+树的倒排索引,所述倒排索引用于通过一个词语编号定位一个内部文档编号集,所述内部文档编号集中对应的每篇文档包括所述词语编号对应的词语。
进一步可选的,如图8所示,所述获取单元707,包括:查询模块7071,倒排索引获取模块7072,目标内部文档编号获取模块7073。
查询模块7071,用于分别根据所述各个词语的编号,查询所述各个词语的编号对应的内部文档编号,获取所述各个词语的编号对应的B+树的倒排索引;
倒排索引获取模块7072,用于根据各个所述倒排索引的索引长度,获取长度最短的倒排索引;
目标内部文档编号获取模块7073,用于依次获取所述长度最短的倒排索引中的目标内部文档编号;
所述目标内部文档编号获取模块7073,还用于当除所述长度最短的倒排索引之外的所述倒排索引中至少一个倒排索引不存在所述目标内部文档编号时,获取下一个所述目标内部文档编号;
所述目标内部文档编号获取模块7073,还用于当除所述长度最短的倒排索引之外的所述倒排索引中都存在所述目标内部文档编号时,获取所述目标内部文档编号。
需要说明的是,附图7或附图8所示装置中,其各个模块的具体实施过程以及各个模块之间的信息交互等内容,由于与本发明方法实施例基于同一发明构思,可以参见方法实施例,在此不一一赘述。
本发明实施例提供一种处理文档的装置,通过抽取单元,用于对文档中的词语进行抽取处理,获得顺排信息,所述顺排信息包括文档编号以及所述文档中的各个词语的编号;分配单元,用于为所述文档分配内部文档编号;添加单元,用于将所述顺排信息中的各个词语的编号添加对应的所述内部文档编号;保存单元,用于将所述各个词语的编号以及所述内部文档编号的对应关系保存在数据库中,使得可以对单篇文档执行入库保存,从而可以提高文档入库的实时性。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和***实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (22)
1.一种处理文档的方法,其特征在于,包括:
对文档中的词语进行抽取处理,获得顺排信息,所述顺排信息包括文档编号以及所述文档中的各个词语的编号,其中,每个词语的编号对应一棵B+树的倒排索引,所述倒排索引用于通过一个词语编号定位一个内部文档编号集,所述内部文档编号集中对应的每篇文档包括所述词语编号对应的词语;
为所述文档分配内部文档编号;
依次获取所述顺排信息中的第一词语的编号,所述第一词语为所述各个词语中的任一词语;
将所述内部文档编号***到所述第一词语的编号对应的B+树的叶子节点中;
将所述各个词语的编号以及所述内部文档编号的对应关系保存在数据库中。
2.根据权利要求1所述的方法,其特征在于,所述对文档中的词语进行抽取处理,获得顺排信息,包括:
离线下载新网页,获得对应的文档;
根据所述文档的网址,获得所述文档编号;
对所述文档中的词语进行抽取处理,获得各个词语;
根据所述各个词语,获得所述各个词语的编号;
根据所述文档编号以及所述各个词语的编号,获得顺排信息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述文档的网址,获得所述文档编号,包括:
根据所述文档的网址,计算所述文档的消息摘要算法第5版MD5值,并将所述文档的MD5值作为所述文档编号;
所述根据所述各个词语,获得所述各个词语的编号,包括:
根据所述各个词语,计算所述各个词语的MD5值,并将所述各个词语的MD5值作为所述各个词语的编号。
4.根据权利要求1所述的方法,其特征在于,所述内部文档编号为根据一个初始化为0的全局变量获得的编号,当一个文档需要保存到数据库时,分配当前的全局变量为所述文档的内部文档编号,然后所述全局变量增加1。
5.根据权利要求4所述的方法,其特征在于,在为所述文档分配内部文档编号之后,还包括:
建立并保存所述内部文档编号到所述文档编号的映射关系。
6.根据权利要求5所述的方法,其特征在于,所述保存所述文档编号到所述内部文档编号的映射关系,包括:
采用连续的内存空间存储所述文档编号到所述内部文档编号的映射关系。
7.根据权利要求1所述的方法,其特征在于,所述将所述内部文档编号***到所述第一词语的编号对应的B+树的叶子节点中,包括:
判断所述第一词语的编号对应的B+树的叶子节点是否已满;
当所述B+树的叶子节点未满时,直接在当前叶子节点中添加所述内部文档编号;
当所述B+树的叶子节点已满时,判断当前层叶子节点是否已满;
当所述当前层叶子节点未满时,添加新的叶子节点,并在所述新的叶子节点中添加所述内部文档编号;
当所述当前层叶子节点已满时,对所述B+树增加一层,并添加新的中间节点以及新叶子节点,并在所述新叶子节点中添加所述内部文档编号,所述新的中间节点连接所述当前层叶子节点以及所述新叶子节点。
8.根据权利要求1所述的方法,其特征在于,在所述将所述各个词语的编号以及所述内部文档编号的对应关系保存在数据库中之后,还包括:
对接收到的用户的查询字串进行预处理,获得所述查询字串中包括的各个词语的编号;
根据所述各个词语的编号,获取所述各个词语的编号对应的内部文档编号中相同的内部文档编号,将所述相同的内部文档编号作为目标内部文档编号;
根据内部文档编号到文档编号的映射关系,确定所述目标内部文档编号对应的文档编号,并输出所述文档编号对应的文档。
9.根据权利要求8所述的方法,其特征在于,所述对接收到的用户的查询信息进行预处理,获得所述查询字串中包括的各个词语的编号,包括:
接收用户输入的查询字串;
将所述查询字串进行纠错处理、单词切分处理,获得所述查询字串中包括的各个词语;
根据所述各个词语,计算所述各个词语的MD5值,将所述各个词语的MD5值作为所述各个词语的编号。
10.根据权利要求8所述的方法,其特征在于,
每个词语的编号对应一棵B+树的倒排索引,所述倒排索引用于通过一个词语编号定位一个内部文档编号集,所述内部文档编号集中对应的每篇文档包括所述词语编号对应的词语。
11.根据权利要求10所述的方法,其特征在于,所述根据所述各个词语的编号,获取所述各个词语的编号对应的内部文档编号中相同的内部文档编号,包括:
分别根据所述各个词语的编号,查询所述各个词语的编号对应的内部文档编号,获取所述各个词语的编号对应的B+树的倒排索引;
根据各个所述倒排索引的索引长度,获取长度最短的倒排索引;
依次获取所述长度最短的倒排索引中的目标内部文档编号;
当除所述长度最短的倒排索引之外的所述倒排索引中至少一个倒排索引不存在所述目标内部文档编号时,获取下一个所述目标内部文档编号;
当除所述长度最短的倒排索引之外的所述倒排索引中都存在所述目标内部文档编号时,获取所述目标内部文档编号。
12.一种处理文档的装置,其特征在于,包括:
抽取单元,用于对文档中的词语进行抽取处理,获得顺排信息,所述顺排信息包括文档编号以及所述文档中的各个词语的编号,其中,每个词语的编号对应一棵B+树的倒排索引,所述倒排索引用于通过一个词语编号定位一个内部文档编号集,所述内部文档编号集中对应的每篇文档包括所述词语编号对应的词语;
分配单元,用于为所述文档分配内部文档编号;
添加单元,用于将所述顺排信息中的各个词语的编号添加对应的所述内部文档编号;
保存单元,用于将所述各个词语的编号以及所述内部文档编号的对应关系保存在数据库中;
所述添加单元,包括:
获取模块,用于依次获取所述顺排信息中的第一词语的编号,所述第一词语为所述各个词语中的任一词语;
***模块,用于将所述内部文档编号***到所述第一词语的编号对应的B+树的叶子节点中。
13.根据权利要求12所述的装置,其特征在于,所述抽取单元,包括:
下载模块,用于离线下载新网页,获得对应的文档;
编号获取模块,用于根据所述文档的网址,获得所述文档编号;
抽取模块,用于对所述文档中的词语进行抽取处理,获得各个词语;
所述编号获取模块,还用于根据所述各个词语,获得所述各个词语的编号;
顺排信息获取模块,用于根据所述文档编号以及所述各个词语的编号,获得顺排信息。
14.根据权利要求13所述的装置,其特征在于,所述编号获取模块,用于:
根据所述文档的网址,计算所述文档的消息摘要算法第5版MD5值,并将所述文档的MD5值作为所述文档编号;
所述编号获取模块,还用于根据所述各个词语,计算所述各个词语的MD5值,并将所述各个词语的MD5值作为所述各个词语的编号。
15.根据权利要求12所述的装置,其特征在于,所述内部文档编号为根据一个初始化为0的全局变量获得的编号,当一个文档需要保存到数据库时,分配当前的全局变量为所述文档的内部文档编号,然后所述全局变量增加1。
16.根据权利要求15所述的装置,其特征在于,所述装置,还包括:
建立单元,用于建立所述内部文档编号到所述文档编号的映射关系;
所述保存单元,还用于保存所述内部文档编号到所述文档编号的映射关系。
17.根据权利要求16所述的装置,其特征在于,所述保存单元,用于:
采用连续的内存空间存储所述文档编号到所述内部文档编号的映射关系。
18.根据权利要求12所述的装置,其特征在于,所述***模块,包括:
判断子模块,用于判断所述第一词语的编号对应的B+树的叶子节点是否已满;
添加子模块,用于当所述B+树的叶子节点未满时,直接在当前叶子节点中添加所述内部文档编号;
所述判断子模块,还用于当所述B+树的叶子节点已满时,判断当前层叶子节点是否已满;
所述添加子模块,还用于当所述当前层叶子节点未满时,添加新的叶子节点,并在所述新的叶子节点中添加所述内部文档编号;
所述添加子模块,还用于当所述当前层叶子节点已满时,对所述B+树增加一层,并添加新的中间节点以及新叶子节点,并在所述新叶子节点中添加所述内部文档编号,所述新的中间节点连接所述当前层叶子节点以及所述新叶子节点。
19.根据权利要求12所述的装置,其特征在于,所述装置,还包括:
预处理单元,用于对接收到的用户的查询字串进行预处理,获得所述查询字串中包括的各个词语的编号;
获取单元,用于根据所述各个词语的编号,获取所述各个词语的编号对应的内部文档编号中相同的内部文档编号,将所述相同的内部文档编号作为目标内部文档编号;
确定单元,用于根据内部文档编号到文档编号的映射关系,确定所述目标内部文档编号对应的文档编号;
输出单元,用于输出所述文档编号对应的文档。
20.根据权利要求19所述的装置,其特征在于,所述预处理单元,包括:
接收模块,用于接收用户输入的查询字串;
预处理模块,用于将所述查询字串进行纠错处理、单词切分处理,获得所述查询字串中包括的各个词语;
计算模块,用于根据所述各个词语,计算所述各个词语的MD5值,将所述各个词语的MD5值作为所述各个词语的编号。
21.根据权利要求19所述的装置,其特征在于,
每个词语的编号对应一棵B+树的倒排索引,所述倒排索引用于通过一个词语编号定位一个内部文档编号集,所述内部文档编号集中对应的每篇文档包括所述词语编号对应的词语。
22.根据权利要求21所述的装置,其特征在于,所述获取单元,包括:
查询模块,用于分别根据所述各个词语的编号,查询所述各个词语的编号对应的内部文档编号,获取所述各个词语的编号对应的B+树的倒排索引;
倒排索引获取模块,用于根据各个所述倒排索引的索引长度,获取长度最短的倒排索引;
目标内部文档编号获取模块,用于依次获取所述长度最短的倒排索引中的目标内部文档编号;
所述目标内部文档编号获取模块,还用于当除所述长度最短的倒排索引之外的所述倒排索引中至少一个倒排索引不存在所述目标内部文档编号时,获取下一个所述目标内部文档编号;
所述目标内部文档编号获取模块,还用于当除所述长度最短的倒排索引之外的所述倒排索引中都存在所述目标内部文档编号时,获取所述目标内部文档编号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310567401.0A CN104636384B (zh) | 2013-11-13 | 2013-11-13 | 一种处理文档的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310567401.0A CN104636384B (zh) | 2013-11-13 | 2013-11-13 | 一种处理文档的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104636384A CN104636384A (zh) | 2015-05-20 |
CN104636384B true CN104636384B (zh) | 2019-07-16 |
Family
ID=53215147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310567401.0A Active CN104636384B (zh) | 2013-11-13 | 2013-11-13 | 一种处理文档的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104636384B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105956203B (zh) * | 2016-06-30 | 2019-03-08 | 湖州亿联信息技术有限公司 | 一种信息存储方法、信息查询方法、搜索引擎装置 |
US10540443B2 (en) * | 2016-12-20 | 2020-01-21 | RELX Inc. | Systems and methods for determining references in patent claims |
CN112395829B (zh) * | 2019-08-01 | 2024-03-19 | 珠海金山办公软件有限公司 | 一种为文档添加中文编号的方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1916905A (zh) * | 2006-09-04 | 2007-02-21 | 北京航空航天大学 | 基于倒排表进行检索提示的方法 |
CN102033954A (zh) * | 2010-12-24 | 2011-04-27 | 东北大学 | 关系数据库中可扩展标记语言文档全文检索查询索引方法 |
CN102722526A (zh) * | 2012-05-16 | 2012-10-10 | 成都信息工程学院 | 基于词性分类统计的重复网页和近似网页的识别方法 |
CN102955812A (zh) * | 2011-08-29 | 2013-03-06 | 阿里巴巴集团控股有限公司 | 一种构建索引库的方法、装置及查询方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
NZ518744A (en) * | 2002-05-03 | 2004-08-27 | Hyperbolex Ltd | Electronic document indexing using word use nodes, node objects and link objects |
-
2013
- 2013-11-13 CN CN201310567401.0A patent/CN104636384B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1916905A (zh) * | 2006-09-04 | 2007-02-21 | 北京航空航天大学 | 基于倒排表进行检索提示的方法 |
CN102033954A (zh) * | 2010-12-24 | 2011-04-27 | 东北大学 | 关系数据库中可扩展标记语言文档全文检索查询索引方法 |
CN102955812A (zh) * | 2011-08-29 | 2013-03-06 | 阿里巴巴集团控股有限公司 | 一种构建索引库的方法、装置及查询方法和装置 |
CN102722526A (zh) * | 2012-05-16 | 2012-10-10 | 成都信息工程学院 | 基于词性分类统计的重复网页和近似网页的识别方法 |
Non-Patent Citations (1)
Title |
---|
一种由B+树实现的倒排索引;李文 等;《电脑知识与技术》;20110315;第7卷(第8期);1720-1722 |
Also Published As
Publication number | Publication date |
---|---|
CN104636384A (zh) | 2015-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5575902B2 (ja) | クエリのセマンティックパターンに基づく情報検索 | |
CN104598631B (zh) | 分布式数据处理平台 | |
CN102164186B (zh) | 一种实现云搜索服务的方法及*** | |
US20160357860A1 (en) | Natural language search results for intent queries | |
CN110704411A (zh) | 适用于艺术领域的知识图谱搭建方法及装置、电子设备 | |
US10394939B2 (en) | Resolving outdated items within curated content | |
CN103605715B (zh) | 用于多个数据源的数据整合处理方法和装置 | |
CN106951557B (zh) | 日志关联方法、装置和应用其的计算机*** | |
CN102411617B (zh) | 一种对海量url进行存储和查询方法 | |
CN104915426B (zh) | 信息排序方法、用于生成信息排序模型的方法及装置 | |
CN102682046A (zh) | 社交网络的节点搜索和分析方法及搜索*** | |
CN104699841A (zh) | 提供搜索结果的列表摘要信息的方法和装置 | |
CN109947759A (zh) | 一种数据索引建立方法、索引检索方法及装置 | |
CN104636368B (zh) | 数据检索方法、装置及服务器 | |
CN104636384B (zh) | 一种处理文档的方法及装置 | |
CN103745006A (zh) | 一种互联网信息搜索***及方法 | |
CN106649385B (zh) | 基于HBase数据库的数据排序方法和装置 | |
CN106599062A (zh) | 一种SparkSQL***中的数据处理方法和装置 | |
CN106789147A (zh) | 一种流量分析方法及装置 | |
CN104216901B (zh) | 信息搜索的方法和*** | |
US8706705B1 (en) | System and method for associating data relating to features of a data entity | |
CN105488165B (zh) | 基于索引库的数据检索方法及*** | |
CN103678601A (zh) | 一种范文检索请求的处理方法和装置 | |
CN107070987B (zh) | 用于分布式对象存储***的数据获取方法及*** | |
CN113032436B (zh) | 基于文章内容和标题的搜索方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |