Elasticsearch搜索系统评分算法(TF/IDF)详解


Elasticsearch搜索系统评分算法(TF/IDF)

测试数据:

 

搜索词:黑色猫

 

拆词结果为:[ 黑色, ]

 

返回的搜索结果数:1178100

 

第一个作品id120200930152404540229

作品关键词:背景,,街道,智能,眼睛,黑色,底图,小猫,,可爱,,,黄色,眼睛,黑色,动物,,,眼睛,,凝视,,眼睛,焦点,黑色,,可爱,黑色,,,坐在,,拖鞋,,与拖鞋,背景,,,黑色,,凝视,眼睛,焦点,,黑色,,凝视,黑色,,眼睛,拖鞋,,,翻转,翻牌,,,坐在关于,翻转,翻牌,黑色,,,黑色,,具有,黄色,眼睛

 

作品搜索评分: 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://www.elastic.co/cn/blog/practical-bm25-part-3-considerations-for-picking-b-and-k1-in-elasticsearch

翻译版:

https://blog.csdn.net/sinat_25926481/article/details/105093848