BM25算法解析

                                                                         

参考文档:http://luokr.com/p/7

ElasticSearch相关度是根据打分机制来计算的。对于每一条搜索结果都会计算出相应的得分,分数越高,代表相关度越高。BM25算法是ElstaticSearch默认的打分算法。

BM25算法通常用来作为搜索相关性评分:对查询经进行语素解析,生成语素气;然后,对于每个搜索结果d,计算每个语素气与d的相关性得分,最后,将气相对于d的相关性得分进行加权求和,从而得到查询与d的相关性得分。

BM25:


首先解析公式前半段:

科普:IDF又叫做逆向文档频率,意思就是    对于给定的文档集合(意思就是公文索引库),包含该关键字的文档越多,该关键字的权重越低(对于整个索引库来说,该关键字出现的次数越多,说明此关键字的参考价值越低);

其中,Q表示查询,补气(就是把一句搜索的话分成若干个关键词)标识Q解析之后的一个语素(对中文而言,我们可以把对查询的分词作为语素分析,每个词看成语素补气);d标识一个搜索结果文档(就相当与一条搜索出来的公文),无线表示语素气的权重。

IDF(逆向文档频率)计算公式如下:

其中,N为索引中的全部文档数,N(QI)为包含了气(也就是关键字)的文档数。

再来看关键词与文档d的相关性得分R(气,d),也就是BM25算法的后半部分

其中,K1为调节因子,b=0.75,avgdl为所有文档的平均长度,dl为文档d的长度,从K的定义中可以看出,参数b的作用是调整文档长度对相关性影响的大小,b越大,文档长度的对相关性得分影响越大,而文档相对长度越长,K值将越大,则相关性的分会越小。

总结:

影响ElasticSearch得分因素:

     1.词频,搜索关键词在文档d中出现的次数成正比

     2.逆向文档频率,搜索关键词在索引库中出现的次数成反比

     3.文档d的长度成反比

     4.搜索语句在文档d中的匹配度成正比

你可能感兴趣的:(BM25算法解析)