最终的score为 boost * idf * tf :
boost: es 指定的放大系数。
idf: inverse document frequency,逆文件频率。是一种词预测主题能力高低的得分情况。如:‘的‘几乎在各个文档中都有,因此idf值很低。但'量子通信'这个词只会在专业类的文档中出现。因此,后者的idf值更高。
tf:词在doc字段中的出现的次数。
idf计算公式:
idf, computed as log(1 + (N - n + 0.5) / (n + 0.5))
此处为 log e 。
N: total number of documents with field 包含此字段的文档个数
n: number of documents containing term 包含搜索词的文档个数
tf 计算公式:
tf的总数值为各分词后的词在本文档字段中的得分值相加。
freq / (freq + k1 * (1 - b + b * dl / avgdl))
freq:occurrences of term within document 词在文档中出现的次数
dl: length of field 本字段中的所有词的个数
avgdl: average length of field 所有文档中,此字段的评价词个数
从以上内容可以得出结论:
tf与搜索词出现的次数正相关,与dl负相关。
示意:
#多字段查询。对title和overview两个字段进行分词查询
GET /movie/_search
{