错误博客( cuowu.com )发布于 2019-06-10 17:46:13

搜索引擎索引排序

搜索引擎索引排序教程。内容包括:打分机制、性能优化和分布式。

打分机制

打分组件也称为查询处理(query processing),在检索模型的基础上,使用排序算法来计算文档的分值。一些搜索引擎的设计者会明确说明系统所采用的检索模型。而另外一些搜索引擎的设计者,只讨论排序算法(展示算法的所有细节),所有的排序算法都是隐含地建立在某种检索模型基础上的。排序算法中使用的特征和权值,可能是凭经验(empirically,通过测试和评估)得到的,但必须与话题和用户相关,否则搜索引擎将不会工作。

研究者们提出了很多种检索模型及导出排序算法的方法,通过这些模型计算文档分值,基本的形式如下

打分机制

公式用来计算词汇表中所有词项的总和,qi是查询中第i个词项的权值,di是文档词项的权值。词项的权值依赖于所使用的特定的检索模型,通常类似于tf.idf权值计算方法。第7章中进一步详细讨论基于BM25和查询似然度(query likelihood)检索模型的排序算法。

另外,必须快速地计算并比较得到文档的分值,以便确定文档的排序,并将其传递给结果输出组件,这就是性能优化组件的任务。

性能优化

性能优化涉及排序算法和相关联的索引表的设计,以降低系统的响应时间,提高查询吞吐量。对于一个给定的文档打分机制的形式,有很多种方式去计算这些分值,并且生成排好序的文档输出结果。例如,分值可以通过对某个查询词项存取索引表进行计算,计算该词项对文档分值的贡献度,将该贡献度的值添加到一个分值累加器中,然后存取下一个索引表。该方法称为term-at-a-time分值计算方法。另外一种方法是,对于所有的查询词项同时存取所有的索引表,通过在索引表中指针的移动来找到出现这些词项的某一个文档,以此来计算分值。在这种document-at-a-time分值计算方法中,可以快速地得到最终的文档分值,而不是每次累加一个词项的值。对这两种方法可以进一步的优化,以便大幅度地降低计算排序靠前的文档所需要的时间。安全的(safe)优化方式,能保证计算得到的分值和没有经过优化的分值相同。不安全的(unsafe)优化方式,有的时候计算速度更快,但不能保证结果和未经优化的结果相同。因此,谨慎地评价优化方式的影响是很重要的。

分布式

索引是以分布式的形式给出的,那么排序也可以采用分布式。查询代理(query broker)描述了如何在网络中将多个用户查询分派给不同的处理器,并且负责将各处理器返回的结果整合到一起,形成给定查询的排好序的结果列表。代理的操作过程与索引的分派形式有关。缓存(caching)是另外一种分布式的形式,索引或者前一个查询得到的排好序的文档结果列表,都可以保留在本地内存中。如果大量的用户都提交相同的查询或索引项,那么本地内存中保留的这些信息可以被重复使用,从而节省很多时间。


2020年错误博客亲测项目系列

错误教程( cuowu.com )专注网推培训、SEO培训和网赚培训,微信/电话:13722793092

关注微信公众号:第一时间获得错误博客最新教程,让我们一起成长!

公众号二维码