(三)Solr的评测指标

502 阅读3分钟

1.相关度

Solr的搜索结果可以根据匹配程度进行排序,每个搜索匹配的文档都会有一个文档相关度得分,可以根据该相关度得分对文档进行排序.

Solr通过Similarity类进行相关度的计算,在Solr的schema.xml中,这个类被定义成为欲置字段,可以通过编写自己的Similarity类完成自定义相似度的计算.

image.png

默认情况下Solr使用Lucene相应的DefaultSimilarty类,将筛选出的文档转化为文档向量,与查询向量计算夹角余选

给定查询(q)和文档(d),查询与文档的相似度得分计算如下:

image.png

1.1词项频率(tf)

词项频率是指在特定词项在文档中出现的次数,表示了文档与该词项的匹配程度,搜索president与united states

image.png

计算公式为: image.png

对文档中查询词项出现的次数开平方根,以此减少查询词项多次出现对相关度得分的额外加成

1.2反向词项频率(idf)

方向词项频率是为了计算词项的罕见程度,如果搜索词中包含the ,in ,a这样的单词,这样的词汇在搜索时会匹配大量无关的文档,所以需要降低the ,in ,a这样词汇的权重,Solr默认认为,文档中出现的次数越少,表示该词项的重要性越大,,反向词项频率为的计算公式为:

image.png

NumDocs为包含该词项的 文档总数,docFreq词项在文档中出现的频率

1.3规范化因子

规范化因子包含三种:字段规范,查询规范和协调因子

1.3.1字段规范(norm)

字段规范因子是对文档或文档中的字段权重进行计算,在创建索引时,可以给每个文档或者字段赋予一个权重,Solr为每一个字段附加一个字节,该字节主要包含以下规范化因子:

  • 文档被索引的权重
  • 字段被索引时的权重
  • 惩罚长文档与提升短文档的归一化因子

字段规范的计算公式为:

image.png

  • d.getBoost()分量表示发送至Solr的文档权重
  • f.getBoost分量表示字段权重,多个相同的字段,会重复相乘
  • lengthNorm(f)分量表示文档长度归一化参数,该参数等于字段中词项数量的平方根

在Solr构建索引时,文档权重,字段权重,和长度归一化因子的乘积会被存储在Solr的索引之中

1.3.2查询规范(queryNorm)

该因子是每一个查询词项的权重的平方之和,再将他与相关度得分的其余部分进行相乘.计算公式为:

image.png

1.3.3协调因子:(coord)

描述查询的词项在该文档中出现的占比

  • 例如搜A,B,C,D,如果该文档中出现了A,B,C,D,协调因子为1;
  • 搜索A,B,C,D,如果该文档中出现了A,B,C,协调因子为0.75

计算公式为:

image.png

2.查准率与查全率

2.1查准率(Precision)

返回的文档是不是我们想要的

计算公式:

p=正确返回的文档数量/总的文档数量

例如:搜索英文字母,返回结果为A,B,C,1,2,3

P=3/6=0.5

查准率考虑了结果的整体精确性,但未考虑结果集的全面性,因此引入了查全率

2.2查全率(Recall)

返回结果中正确的结果,占所有该返回结果的数量,反应搜索的全面性

计算公式:

p=返回的正确文档数量/总的正确的文档数量

例如:搜索英文单词,返回结果为A,B,C,1,2,3. 引擎中的数据为A,B,C,D,E,,1,2,3,4,5,6

R=3/5=0.6