基于索引表检索的方法及装置的制造方法_3

文档序号:8258743阅读:来源:国知局
的文本,生成了分词“演员甲”在这个文本内的共生信息并且与文本标识绑定后,根据“演员甲”这个分词在索引表的节点上进行遍历,命中了节点A,就把“演员甲”在这个文本内的共生信息添加存储到节点A内,这样就等于对节点A的共生信息进行了更新。本申请并不限于以上示例的内容,上述数字、格式和文档内容并不限定本申请的保护范围
[0063]当在所述索引表的节点上遍历后存在没有命中的分词时,在所述索引表中的空白节点上创建所述没有命中的分词,并在所述空白节点上存储经绑定处理后的所述没有命中的分词的共生信息。接续上例还来说明,如果索引表中就没有节点对应“演员甲”,生成了分词“演员甲”在这个文本内的共生信息并且与文本标识绑定后,根据“演员甲”这个分词在索引表的节点上进行遍历,显然无法命中,此时就在索引表中的空白节点B上创建“演员甲”这个分词,并“演员甲”在这个文本内的共生信息添加存储到空白节点B。需要说明的是,在索引表中选择当前可用的最高地址的空白节点进行存储。本申请并不限于以上示例的内容,上述数字、格式和文档内容并不限定本申请的保护范围。
[0064]根据所述各分词中的每一个在所述索引表的节点内进行遍历时,会优先查找所述节点内的最高地址,因为所述节点的最高地址设置有分词指示位,用于指示所述节点所对应的分词。比如,索引表中节点A对应的分词是“演员甲”,那在节点A的最高地址设置有分词指示位,专门用来指示对应的分词是“演员甲”,这样检索时优先检索每个节点内的最高地址以便快速定位到目标节点,如果共生信息对应的分词与分词指示位匹配,说明找到了节点,就可以在节点内遍历,如果共生信息对应的分词与分词指示位不匹配,说明这个节点不对,可以直接跳过查验之后的节点了,极大提高了检索效率。本申请并不限于以上示例的内容,上述数字、格式和文档内容并不限定本申请的保护范围。
[0065]另外,当一节点无法存储一分词的所有共生信息时,由多个节点共同存储所述分词的共生信息,所述多个节点的分词指示位均指示所述分词。例如,在很多文本中都出现了“演员甲”这个词,所以“演员甲”的共生信息很多,数据量大到无法由一个节点所容纳,所以此时分别有节点A、节点B、节点C共同存储“演员甲”的共生信息,每个节点分别存储了“演员甲”的共生信息中的一部分,同时节点A、节点B、节点C中的分词指示位均指示对应的分词是“演员甲”,这样对于检索就非常便利了。本申请并不限于以上示例的内容,上述数字、格式和文档内容并不限定本申请的保护范围。
[0066]更新所述索引表时会将共生信息存储在节点内,实质上是将共生信息存储在内存区块中的地址存储在节点内。将绑定处理后的各分词的共生信息向节点内进行存储时,由所述偏移量开始向所述起始地址进行存储,相对于所述起始地址的偏移量用于对每个节点内的可用存储空间进行标识,所述可用的存储空间为所述偏移量到所述起始地址。每个节点内的总存储空间是预先配置好的,所述总存储空间为节点内起始地址和结束地址之间的部分。例如,节点内的地址为0x08010000—0x08011000表示总存储空间,偏移量为0x08010501,那么表示0x08010000—0x08010500是可以写入新数据的可用存储空间,而0x08010501—0x08011000表示已经写入数据的不可用存储空间。本申请并不限于以上示例的内容,上述数字、格式和文档内容并不限定本申请的保护范围。
[0067]步骤S1024,周期性地对所述索引表中的所有节点的有效性进行查询,对于失效的节点进行清理。
[0068]除了对索引表进行共生信息的添加,在本步骤中还要对索引表内的数据进行淘汰,包括:当查询到节点内存储的绑定处理后的所有分词的共生信息失效时,并不直接删除,因为一次查询过程有可能存在错误,因此为了避免误删除,此时在所述索引表中先屏蔽所述节点,然后等待一段时间,在这段时间内很可能发生多次对所述节点是否失效的查询,如果还是失效则始终保持屏蔽状态,如果当所述节点被屏蔽的时长超过一预设门限,则可以确认其失效状态为真实,清空所述节点,保留所述节点的内存空间。
[0069]需要说明的是,步骤S1024的执行时机不受约束,其可以与步骤S1020?S1022并行执行,也可以先于步骤S1020执行,甚至先于SlOO执行,也可以在步骤S1022之后执行,但是步骤S1024的执行与S100、S1020、S1022没有必然联系。
[0070]图3为图1中步骤S104的方法流程示意图,包括:
[0071]步骤S1040,接续步骤S1022执行,识别用户输入的搜索词并对所述搜索词进行分词,根据分词处理所得到的多个分词中的每一个分别在所述索引表中进行遍历,获得命中的节点。
[0072]下面用一个应用实例对上述步骤进行解释。
[0073]假设用户输入的搜索词为“演员甲演员乙”,分词处理后得到的各分词依序排列为“演员甲I演员乙”,根据“演员甲”在所述索引表中进行遍历,获得命中的节点A,根据“演员乙”在所述索引表中进行遍历,获得命中的节点B。本申请并不限于以上示例的内容,上述数字、格式和文档内容并不限定本申请的保护范围。
[0074]步骤S1042,针对命中的任一节点,分别获取所述任一节点内所存储的所有共生信息形成一组共生信息,从而得到与所述命中的节点数对应的多组共生信息;
[0075]接续上个应用实例对上述步骤进行解释。
[0076]对于节点A,获得了“演员甲”的第一组共生信息(occur),包括occurll、occurl2、occur 13等,occur 11绑定的文本标识为1391,occur 12绑定的文本标识为1392,occur 13绑定的文本标识为1393。
[0077]对于节点B,获得了 “演员乙”的第二组共生信息,包括occur21、occur22、occur23等,occur21绑定的文本标识为1391,occur22绑定的文本标识为2392,occur23绑定的文本标识为2393。本申请并不限于以上示例的内容,上述数字、格式和文档内容并不限定本申请的保护范围。
[0078]步骤S1044,由所述多组共生信息中提取出具有同一文本标识的共生信息,对于具有同一文本标识的共生信息,成对地比较所述同一文本标识的共生信息中对应分词在文本中出现的位置的距离以及出现的次数,当所述距离小于或等于一第一门限且所述次数小于或等于一第二门限时,将所述同一文本标识的共生信息中的文本标识进行输出。
[0079]接续上个应用实例对上述步骤进行解释。
[0080]比较分析发现第一组共生信息中的occurll和第二组共生信息中的0ccur21具有同一文本标识1391,说明occurll和occur21出自同一篇文本。提取出occurll和occur21,occurll携带的共生信息为(2,0,5),说明“演员甲”在文本标识为1391的文本中出现过两次,位置分别为O和5;OCCur21携带的共生信息为(2,2,6),说明“演员乙”在文本标识为1391的文本中出现过两次,位置分别为2和6。比较occurll和occur21中出现的位置和次数,两者的次数相等,而出现的位置的距离都不超过门限2,说明在文本标识为1391的文本中“演员甲”和“演员乙”这两个词都是紧随着出现的,非常符合用户搜索的意图,因此将文本标识1391输出,这个文本标识为1391的文本就是用户搜索的目标。本申请并不限于以上示例的内容,上述数字、格式和文档内容并不限定本申请的保护范围。
[0081]需要说明的是,如果用户输入的搜索词分词后为三个,则会找到三组共生信息,如果在三组共生信息中分别找到一个共生信息,三个共生信息具有同一文本标识,在进行出现的位置的距离以及出现的次数比对时,需要两两之间成对地比对。
[0082]实施例1.2
[0083]本例是在实施例1的框架下,详细描述对文本信息对象进行提取,并利用文本信息对象对索引表中正排索引进行更新。当然,更新正排索引之后,还可以根据用户输入的搜索词使用正排索引进行遍历并输出。
[0084]图4为图1中步骤S102?S104的方法流程示意图,包括:
[0085]步骤S1120,计算所述分词的个数,将所述分词的个数作为文本长度,还记录所述文本长度的获取时间。
[0086]下面用一个应用实例对上述步骤进行解释。
[0087]对于收集的文档A,文档A的标题(文本)是“演员甲主演的电影中演员甲扮相很帅”,而分词处理后得到的为“演员甲I主演I的I电影I中I演员甲I扮相I很I帅”,一共有9个分词,所以文本长度就是9,同时获取文本长度的时间为2014-7-1912:23:32。
[0088]步骤S1122,将所述文本标识、所述文本长度或所述文本长度的获取时间中一种或多种的组合,与所述文本进行合并作为文本信息对象,根据所述文本信息对象更新索引表,执行步骤SI 140。
[0089]根据所述文本信息对象更
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1