一种实现倒排链快速归并的方法和装置的制造方法_2

文档序号:9471459阅读:来源:国知局
排链靠近链头的位置。所述文档的多维特征包括文档的点击量、文档质量和文档的作者。在这里可以认为点击量超过预设阈值的文档为优质文档,还可以认为文档的作者属于著名或知名的作者,例如科学院院士、大学教授、或者公众熟知的作者,该作者写的文档为优质文档;另外,还可以根据文档质量来判断是否为优质文档,例如文档讨论的内容、文档的篇幅数等。将优质文档排在倒排链靠近链头的位置的好处是:在后续的归并处理中可以在召回一定文档数量(几百或几千篇)后提前结束归并。
[0040]步骤S102:通过所述倒排索引查询到与至少一个关键词对应的多条倒排链。
[0041]所述至少一个关键词是通过采用多粒度分词方法对给定文本进行分词产生的。对于中文搜索引擎而言:粒度是衡量分词后的文本所含信息量的大小。文本所含信息量越多,粒度就越大,反之就小。在用户在搜索引擎的搜索界面输入给定文本(也叫查询文本)后,搜索引擎为了更全面、更准确的显示搜索结果,需要先对给定文本进行分词处理。分词技术是搜索引擎技术中的核心技术之一。尤其是对于中文搜索引擎,分词准确性对于搜索结果是至关重要的。众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单地通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来才表示一个词。再如,在“王君虎去北京了”这句话中,“王君虎”是个词,因为是一个人的名字,但是让计算机去识别就困难了。目前,国内已经研究出多种中文分词方法,多粒度分词方法是其中的一种。本发明可以采用本领域公知的任意一种分词方法,产生至少一个关键词,然后通过倒排索引查询到所述至少一个关键词对应的多条倒排链。
[0042]步骤S103:按照长度从小到大的顺序对所述多条倒排链进行排序。
[0043]根据记录的各条倒排链的长度大小,采用本领域技术人员公知的任意排序方法来按照长度从小到大的顺序对所述查询到的多条倒排链进行排序。公知的排序方法包括:插入排序法、冒泡排序法、选择排序法等。所述插入排序法就是检查第i个数字,如果在它的左边的数字比它大,进行交换,这个动作一直继续下去,直到这个数字的左边数字比它还要小就可以停止。所述冒泡排序法就是依次比较相邻的两个数,将小数放在前面,大数放在后面,如此重复直至最终完成排序;由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序法。所述选择排序法就是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
[0044]步骤S104:从长度最小的倒排链开始对所述排序后的多条倒排链进行顺序归并。
[0045]在完成对所述查询到的多条倒排链的从小到大排序之后,采用最短倒排链优先进行归并的原则,从长度最小的倒排链开始对所述排序后的多条倒排链进行顺序归并,直至将所述多条倒排链归并完毕。
[0046]下面通过具体例子来说明如何进行归并。
[0047]例如,用户想通过搜索引擎检索给定文本“市场营销科学方法”,搜索引擎先将“市场营销科学方法”切分成多个关键词:“市场”、“营销”、“科学”、“方法”,通过倒排索引查询至IJ分别包含关键词“市场”、“营销”、“科学”、“方法”的4条倒排链。假设包含关键词“市场”的倒排链的长度为200,包含关键词“营销”的倒排链的长度为170,包含关键词“科学”的倒排链的长度为150,包含关键词“技术”的倒排链的长度为220 ;则对这4条倒排链按链长长度为从小到大的顺序进行排序,得到排序为:①包含关键词“科学”的倒排链、②包含关键词“营销”的倒排链、③包含关键词“市场”的倒排链、④包含关键词“技术”的倒排链;从长度最小的倒排链开始对所述排序后的这4条倒排链进行顺序归并就是:优先将①包含关键词“科学”的倒排链和②包含关键词“营销”的倒排链进行归并,合并成包含关键词“科学”和“营销”的倒排链,然后将该合并的包含关键词“科学”和“营销”的倒排链与③包含关键词“市场”的倒排链进行归并,合并成包含关键词“科学”、“营销”和“市场”的倒排链,最后将该合并的包含关键词“科学”、“营销”和“市场”的倒排链与④包含关键词“技术”的倒排链进行归并,从而得到想要的搜索结果。
[0048]综上所述,由于先归并长度小的倒排链,这减少了比较和遍历的次数,进而加快了归并速度,减少了查询所需的时间。
[0049]另外,在一个优选实施例中,在对所述排序后的多条倒排链进行顺序归并时采用截断方法来进行,具体过程是:召回预设数量的排在倒排链靠近链头位置的文档后提前结束归并。具体而言,在查询时需要合并链可能会有几十万、上百万甚至上千万的长度,而真正需要的结果就几十或几百个。遍历完整的一条倒排链的话会非常耗时,影响用户体验,所以可以采用截断的方式来保证响应时间。正如在步骤SlOl的优选实施例中描述的,在建立倒排索引的过程中将倒排链所记录的文档按照多维特征进行排序,确保优质文档排在倒排链靠近链头的位置,在归并处理时可以在召回少量文档数量后能够提前结束归并。该少量文档数量可以是几百或几千,这样优质文档优先排在倒排链靠近链头的位置,就可以提前找到目标文档,由此提前结束归并。这样的好处在于:提前结束归并操作,减少了遍历的次数,减少了查询所需的时间,提高了查询时的搜索效率和准确率,从而提高搜索引擎的整体性能。
[0050]本发明实施例提供的实现倒排链快速归并的方法,其有益效果是:优先对链短的倒排链进行归并,进行比较和遍历的次数少;另外在建立倒排索引过程中优先使用多粒度分词的方法建立分别包含检索单元和语义单元的多条倒排链,这样既可以提升搜索结果的召回率,又减少了需要归并的倒排链的数量和长度,减少了遍历的次数;另外在建立倒排索引的过程中还包括将倒排链所记录的文档按照多维特征进行排序,确保优质文档排在倒排链靠近链头的位置,这样可以在召回预设数量的排在倒排链靠近链头位置的文档后提前结束归并。这些措施减少了查询所需的时间,提高了查询时的搜索效率和准确率,从而提高搜索引擎的整体性能。
[0051]对于中文搜索引擎,中文分词方法直接影响搜索的准确性。如果分词粒度过大,将导致只有输入特定关键词才能搜索到相应结果。如果分词粒度过小,则影响搜索的准确性。举一个简单的例子:“北京饭店”这个词,如果分词粒度过大,例如为“北京饭店”,则必须输入“北京饭店”这4个字才能搜索到相关的文章,仅输入“北京”或者“饭店”,则得不到想要的结果。但如果分词粒度过小,例如分成“北”/ “京”/ “饭”/ “店”,那么当用户输入鞋店时(分词为“鞋”/ “店”)也能搜索到“北京饭店”,但这是用户不希望的搜索结果。所以准确的分词方案应该是“北京”/ “饭店”。
[0052]准确的分词方案对搜索结果非常重要。举例来说,在电子商务领域,销售者和购买者都要求有较高的搜索召回率,小粒度分词方案更合适;而在搜索网页时,由于存在海量的网页数据,此时搜索精准率对用户尤其重要,大粒度分词方案更合适。搜索召回率是指搜索到的相关文档数与文档库中所有相关文档数的比率;搜索精准率是指检索出的相关文档数与检索出的文档总数的比率。一般来说,分词粒度越小,搜索召回率越高;分词粒度越大,搜索准确性越高。
[0053]在同一应用领域的不同使用阶段,对分词粒度的要求也不相同。例如使用搜索引擎,需要小粒度分词以便找到足够多的网页,在排序时需要大粒度分词以提高搜索精准率。但是分词粒度越小,倒排链就越长,分词粒度的层次越多,索引的数量就越多,这对搜索系统的性能构成了极大的考验。
[0054]综上所述,本发明的优选实施例在建立倒排索引过程中优先使用多粒度分词的方法建立分别包含检索单元和语义单元的多条倒排链,可以减少归并的倒排链数量,并且进一步减少倒排链的长度。例如,用户检索“中华人民共和国建立时间”这个词,采用小粒度分词方法得到的检索单元是“中华”、“人民”、“共和国”、“建立”、“时间”,采用
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1