参考文档: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中的匹配度成正比
网友评论