Elasticsearch搜索系统评分算法(TF/IDF)
测试数据:
搜索词:黑色猫
拆词结果为:[ 黑色, 猫 ]
返回的搜索结果数:1178100
第一个作品id:120200930152404540229
作品关键词:背景,猫,街道,智能,眼睛,黑色,底图,小猫,街,可爱,眼,猫,黄色,眼睛,黑色,动物,猫,猫,眼睛,猫,凝视,猫,眼睛,焦点,黑色,猫,可爱,黑色,猫,猫,坐在,上,拖鞋,猫,与拖鞋,背景,街,猫,黑色,猫,凝视,眼睛,焦点,猫,黑色,猫,凝视,黑色,猫,眼睛,拖鞋,和,猫,翻转,翻牌,和,猫,坐在关于,翻转,翻牌,黑色,街,猫,黑色,猫,具有,黄色,眼睛
作品搜索评分: 11.807863
Elasticsearch搜索系统评分算法(TF/IDF)
IDF(Inverse document frequency): 逆文档频率指数
说明:搜索词在整个索引的所有文档中出现了多少次,出现的次数越多,就越不相关.
idf,公式 ln(1 + (N - n + 0.5) / (n + 0.5))
n = 为包含该搜索词的文档数
N = 为包含该字段的文档
【黑色】idf计算
n = 233759
N = 2391656
带入上述变量计算【黑色】idf得分:
Idf得分:2.325449 = ln(1 + (2391656 - 233759+ 0.5) / (233759+ 0.5))
【猫】idf计算
n = 76566
N = 2391656
带入上述变量计算【猫】idf得分:
Idf得分:3.441582= ln(1 + (2391656- 76566+ 0.5) / (233759+ 0.5))
注:(目前搜索为四个分片,总量为9378254,以上为单分片下的逆文本频率指数)3
TF(Term frequency): 词频
说明:搜索词在搜索字段中出现的次数,出现次数越多,就越相关
tf, 公式 freq / (freq + k1 * (1 - b + b * dl / avgdl))
freq 为文档中搜索词出现次数
k1=1.2(常数)为词频控制相关性因子,可配置项(值越大变化越快)
k1参数曲线(of TF/IDF部分):
b=0.75(常数) 为长度相关性控制因子,可配置项( 0关闭长度相关性控制)
dl=字段长度
avgdl=字段平均长度
【黑色】tf计算
freq=9, k1=1.2, b=0.75, dl=68, avgdl=89.066505
计算【黑色】tf得分:
tf得分:0.90116006 = 9 / (9 + 1.2 * (1 – 0.75 + 0.75 * 68 / 89.066505))
【猫】tf计算
freq=19.0,k1=1.2,b=0.75,dl= 68.0,avgdl= 89.066505
计算【猫】tf得分:
tf得分:0. 9506118 = 19 / (19 + 1.2 * (1 – 0.75 + 0.75 * 68 / 89.066505))
搜索评分:
搜索评分公式 IDF*BOOST*TF
IDF 逆文档频率指数
BOOST =2.2(常数),可配置项,搜索权重配置参数,大部分提权操作就是操作该词或该作品的boost值
TF 词频
搜索评分计算:
关键词:
【黑色】4.610323 = 2.325449*2.2*0.90116006
【猫】7.197539 = 3.441582*4*0.9506118
核心关键词:
最终搜索词评分:11.807862=4.610323+7.197539
以上计算只针对搜索词es系统算法评分,人工权重,关键词权重,多字段搜索权重,后台权重配置项均不考虑的情况下
相关文档:
TF/IDF算法通用性说明:
https://blog.csdn.net/weixin_44993313/article/details/106224031
TF/IDF算法推导说明:https://www.cnblogs.com/forfuture1978/archive/2010/03/07/1680007.html
b和k1相关性因子说明原文:
翻译版:
https://blog.csdn.net/sinat_25926481/article/details/105093848