搜索引擎中相关性算法的研究

1.什么是搜索的相关性

    搜索相关性是衡量查询语句与文档之间的相关的程度。例如 ES中对每个匹配查询都会有对应的得分_score

2.什么是打分,得分是怎么产生的

    打分的本质是排序。把最符合用户需求的文档排在前面。ES5之前使用的是tf-idf ,ES5 之后使用的是bm25

3.tf-idf算法介绍

      tf  term frequency

      查询的文本的词条在document中出现的次数,出现次数越高,相关度越高

      idf  inverse document frequency

     查询的文本中词条在索引文档中出现的次数,出现的次数越多,相关度越低

     field-length-norm  字段长度规约

     字段越短,字段的权重越高;反之,字段越长,相关度越低。

 

出现的文档数

总文档数

IDF

区块链 200万 10亿 log(500)=8.96
10亿 10亿 log(1)=0
应用 5亿 10亿 log(2)=1

      tfidf(t,d,D)=tf(t,d)*idf(t,D)

4.bm25 best match

搜索引擎中相关性算法的研究_第1张图片

 

k的默认值是1.2  数值越小,饱和度越高。b 的值是0.75 b为 0 代表 normalization

1.ES为什么使用BM25还不是tf-idf

搜索引擎中相关性算法的研究_第2张图片

 

    TF无限增加,BM会趋于一个稳定的数值

     idf的缺陷: terms 出现在超过一半的文本中,会使idf的值计算为负值。

5.function_score  可以修改查询以后的文档的分数

    通过  boosting negative_boosting 降低某些文档的排名 比如我们想要查看不含某个单词,但是希望降低包含另一个单词的文档的得分

    通过  field_value_factor 对指定的字段作为权重进行加权。

 

参考

1.https://en.wikipedia.org/wiki/Tf%E2%80%93idf

2.https://en.wikipedia.org/wiki/Okapi_BM25

3.https://www.elastic.co/guide/en/elasticsearch/guide/current/not-quite-not.html#boosting-query

4.https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html

 

你可能感兴趣的:(ELK)