ElasticSearch--Lucene是怎么计算相关度的
来源:互联网 发布:php require use 编辑:程序博客网 时间:2024/04/27 01:10
话不多说,直接上公式
公式说明:
- score(q,d)是文档 d 和查询 q 之间的相关度
- queryNorm(q)是查询正则化因子 %
- coord(q,d)是coordination factor %
- 对在查询字符串q中的每个单词t在文档d中的权重求和
- 词频,单词t在文档d中的词频
- t的idf
- t.getBoost()是一个权重的提升权重%
- norm(t,d) 是filed-length norm %
其中socre tf idf 是我们已经讲过的。 queryNorm、coord、boost和norm 是没讲过的。
Query Normalization Factor
Query normalization 因子是一个想要正则化查询,这样让我们可以比较不同查询之间的相关度(但其实效果并不好).
这个因子在访问的开始被计算,而实际的计算依赖于查询,一个典型的实现是
sumOfSquaredWeights 是把所有单词的IDF加起来然后开根号
Query Coordination
coordination 因子是想要对含有高比例的访问单词一个相关度奖励。越多的访问单词出现在文档中,越意味着高的相关度。 例如我们有一个query:quick brown fox, 并且每个单词的权重是1.5。如果没有coordination 因子,相关度会仅仅是单词权重的求和。例如:
文档fox -> score:1.5
文档quick fox -> socre:3.0
文档 quick brown fox -> socre:4.5
coordination因子将score乘以匹配单词的数量再除以总共访问单词的数量。用了coodination因子后:
文档fox: socre:1.5*1/3 = 0.5
文档quick fox: score:3.0*2/3 = 2.0
文档 quick brown fox -> socre:4.5*3/3 = 4.5
可以看出来这样子导致含有所有访问单词的文档拥有更高的相关度
bool 查询默认使用coordination。但是也我们也可以关闭这个功能。
coordination是一个好东西,但是在某些高端点的场景中,我们需要关闭这个功能,例如搜索jump、leap和hop这些词的时候。我们不关系有多少近义词的呈现,因为它代表相近的意思。
Index-Time Filed-Level Boosting
在查询的时候我们可能想提高某个filed的权重,
下边有三点建议:
- 将boost和filed-length norm一起用
- 若要修改index-time boost, 则不需重新索引所有的文档。而query-time boost, 则不需要,可以在任何时候都修改
- 如果一个filed在index-time boost有好几个值,会极大的提高这个filed的权重
Query-time boosting is a much simpler, cleaner, more flexible option.
- ElasticSearch--Lucene是怎么计算相关度的
- ElasticSearch相关度计算
- ElasticSearch 的分数 (_score) 是怎么计算得出 (2.X & 5.X)
- elasticsearch与Lucene相关介绍
- [Elasticsearch] 控制相关度 (一) - 相关度分值计算背后的理论
- [Elasticsearch] 控制相关度 (一) - 相关度分值计算背后的理论
- [Elasticsearch] 控制相关度 (一) - 相关度分值计算背后的理论
- [Elasticsearch] 控制相关度 (一) - 相关度分值计算背后的理论
- 电视台的收视率是怎么计算的
- CPU的利用率是怎么计算的
- CPU的利用率是怎么计算的
- CPU的利用率是怎么计算的
- memory到底是怎么计算出来的
- 活期利率是怎么计算的?
- C++bitset to_ulong()是怎么计算的
- 解读百度权重是怎么计算的
- 云计算思想是怎么产生的
- darken函数是怎么计算的呢?
- python自然语言处理学习笔记三
- 我们应该怎样做需求分析?(一)需求调研
- tensorflow中embedding_lookup, tf.gather以及tf.nn.embedding_lookup_sparse的理解
- UOJ 112 & BZOJ 4071 [Apio2015]巴邻旁之桥
- 日期问题
- ElasticSearch--Lucene是怎么计算相关度的
- 【ASP.NET】六大内置对象
- UNIX再学习 -- 信号处理
- Maven Wrapper
- VirtualBox安装VBoxLinuxAdditions错误:unable to find the sources of your current linux kernel
- cloudera add host
- 后台时间控件,用js动态加载时,要初始化——项目问题
- C++图形学之线性插值
- 诶呀 居然可以写微博了 哈哈哈