搜索引擎中的文档划分

 

对于大规模文档索引,因为无法存储在单机中,所以需要在分布式环境下进行一个划分,划分方法有两种term partition和doc partition。Doc partition已经被证明更适合在搜索引擎中使用(Google也使用这种划分),简言之Doc partition就是把大规模的文档集合分成很多小的文档集合,每台索引服务器仅仅索引一个小的文档集,当Query到来时,把query分发到各个索引服务器上,索引服务器在自己的索引文件上检索并返回结果,最终把这些结果整合返回给前台用户。

 

上面的描述忽略了一个问题:把什么样的文档放在一个集合里?最简单的办法是随机,但是随着网页数量的不断膨胀,为了保存这些网页的索引文件所需要的机器也越来越多,可能有成千上万台,如果是随机分配文档到机器上,那就不得不为每一个query都启动这些机器提供服务,用户有限的耐心让准确率的重要性远远大于召回率的重要性,搜索引擎没有必要返回过多的对于查询并不密切相关的可能要排在100页之后的结果。

 

为了减少资源的消耗,也为了提供更好的检索结果,提出了一种在分布式环境下划分文档集合的一种方法:引入聚类方法把整个大的文档集合聚类成若干个小类,把每个小类放在特定的机器上,当query到来时,可以用一些算法(比如CORI、KL)为query属于某些类别的概率打分,选择分数大于特定阈值的类别,或者取top N个类别。只把query发送到保存这些类别的索引机器上进行检索。很明显这种策略会减少索引服务器的资源消耗,而且因为融入了查询意图理解(当然理解query还有很多其他工作),将使搜索引擎更聪明,返回的结果更准确。

 

PS:稍微拓展一下思维,就可以想到在基于聚类划分文本的基础上在基于时序切分,并对query的时间要求进行分析,如果有时间要求(比如新闻相关的),则应该优先考虑检索最近新抓取的网页,如在汶川地震期间,用户搜索“四川地震”,应当优先把最近的汶川地震网页返回,而不要返回若干年前的地震报道网页。

 

PS2:本文介绍的是通过聚类方法进行的划分,其实基于大规模QueryLog提取一定数量的特征再对文本进行划分被认为是更好的方法,关于这种方法的介绍或许我以后会写,我又没有log:)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值