一、打分排序的特性
其实对于打分排序来说,我们最终只需要确定文档的相对顺序即可,因此我们可以简化打分的算法,只需要保持相对顺序不变即可;
二、快速排序及打分方法
我们前面的打分排序方法都需要计算查询及每篇文档的余弦相似度,然后需要取出打分最高的前K篇文档,这样做的复杂度是很高的;其实如果有一个算法能够近似求出前K篇文档但是复杂度少很多(不需要计算所有文档的得分),则我们通常会采用后一种算法;
通用方法:预先找到文档子集A(远小于初始文档集),包含了大多数的候选文档,并在A中计算得分最高的前K篇文档;以下方法都是基于这个规则计算的;
1.索引去除技术
(1)只考虑term的idf超过阈值的posting;因为低idf的term通常是stop words,posting非常长,所以不计算这些将使复杂度大大降低,因此不必考虑;
这里会出现超过阈值的doc没超过K篇,则需要使用层次型索引解决;
层次型索引:将倒排记录表进行分层,比如tf超过20的在第一层,tf超过10的在第二层,当需要查找前K篇文档时,只需要先在第一层查找,如果没取够K篇,则到第二层查找;
因此层次型索引是解决可能返回文档少于K篇的方法;
(2)只考虑包含多个查询词项的文档;