Your SlideShare is downloading. ×
0
Solr Community of China
© Copyright www.solr.cc
----风雨
lucene评分机制分析
风雨
2013年7月4日
Solr Community of China
www.solr.cc
议题
 一.名词解释(预备知识)
 二.相似度算法介绍VSM 介绍
 三.VSM对应lucene的打分公式推导
 四. Lucene评分公式的细化介绍
 五. 改...
Solr Community of China
www.solr.cc
一.名词解释(预备知识)
1. 分词: 研究生|研究|生产 研究生|研究生|产
2. Token:倒排表最小单位,即分词中 词
3. Term:query的最小单位,til...
Solr Community of China
www.solr.cc
二.常见相似度算法介绍VSM
Solr Community of China
www.solr.cc
三.VSM对应lucene的打分公式推导
 设:
 查询向量为Vq = <w(t1, q), w(t2, q), ……, w(tn, q)>
 文档向量为Vd = <...
Solr Community of China
www.solr.cc
三.VSM对应lucene的打分公式推导
 Lucene采用的Similarity,认为在计算文档的向量长度的时候,每个Term的权重就丌再考
 虑在内了,而是全部为一...
Solr Community of China
www.solr.cc
三.VSM对应lucene的打分公式推导
 代入余弦公式:
加上lucene自己的各种boost和coord
Solr Community of China
www.solr.cc
四. Lucene评分公式的细化介绍
 1协调因子 coord(q,d)
coord(q,d) = overlap/ maxOverlap
 overlap(命中查询个...
Solr Community of China
www.solr.cc
四. Lucene评分公式的细化介绍
 2. 查询规范因子 queryNorm(q) (对排序无任何影响)
queryNorm(q) = 1/(q.getBoost()^...
Solr Community of China
www.solr.cc
 3.文档词频因子 tf(t in d)
tf(t in d) = Math.sqrt(freq)
 例如 搜索 图书名称:红楼梦
 文档1:图书名称:红楼梦tf=1...
Solr Community of China
www.solr.cc
四. Lucene评分公式的细化介绍
4. 文档出现频率因子 idf(t)
idf(t) = 1.0 + log(numDocs/(docFreq+1))
 numDoc...
Solr Community of China
www.solr.cc
四. Lucene评分公式的细化介绍
5. 查询权重t.getBoost
itemName:红楼梦^10.0 itemDesc:红楼梦
Solr Community of China
www.solr.cc
四. Lucene评分公式的细化介绍
6. 标准化因子 norm(t,d)
norm(t,d) = doc.getBoost()· lengthNorm· ∏ f.getB...
Solr Community of China
www.solr.cc
四. Lucene评分公式的细化介绍
将上面1-6部分细化的部分代入上面公式得到
score(q,d) = (overlap / maxOverlap )·(1/(q.ge...
Solr Community of China
www.solr.cc
五. 改变评分的一般策略
API调用:
索引时刻:filed boost设置, doc boost设置
4.0之前:doc.setBoost(5.0f);
查询时刻: qu...
Solr Community of China
www.solr.cc
五. 改变评分的一般策略
重写:Similarity (继承DefaultSimilarity或TFIDFSimilarity)
Solr Community of China
www.solr.cc
五. 改变评分的一般策略
使用:explain 查看评分细节,修改评分策略
Solr Community of China
www.solr.cc
六. 拍砖答疑时间
Solr Community of China
www.solr.cc
谢谢!
Upcoming SlideShare
Loading in...5
×

Solr中国7月14日讲座v2

895

Published on

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
895
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Solr中国7月14日讲座v2"

  1. 1. Solr Community of China © Copyright www.solr.cc ----风雨 lucene评分机制分析 风雨 2013年7月4日
  2. 2. Solr Community of China www.solr.cc 议题  一.名词解释(预备知识)  二.相似度算法介绍VSM 介绍  三.VSM对应lucene的打分公式推导  四. Lucene评分公式的细化介绍  五. 改变评分的一般策略  六. 拍砖答疑时间 预估时间:1小时
  3. 3. Solr Community of China www.solr.cc 一.名词解释(预备知识) 1. 分词: 研究生|研究|生产 研究生|研究生|产 2. Token:倒排表最小单位,即分词中 词 3. Term:query的最小单位,tilte:皇帝 4. Tf:一个term在一个文档中出现的次数 5. Idf:一个term在多少个文档中出现过 6. 向量运算:
  4. 4. Solr Community of China www.solr.cc 二.常见相似度算法介绍VSM
  5. 5. Solr Community of China www.solr.cc 三.VSM对应lucene的打分公式推导  设:  查询向量为Vq = <w(t1, q), w(t2, q), ……, w(tn, q)>  文档向量为Vd = <w(t1, d), w(t2, d), ……, w(tn, d)>  W=tf*idf 则:  Vq*Vd = w(t1, q)*w(t1, d) + w(t2, q)*w(t2, d) + …… + w(tn ,q)*w(tn, d) =tf(t1, q)*idf(t1, q)*tf(t1, d)*idf(t1, d) + …… + tf(tn,q)*idf(tn, q)*tf(tn, d)*idf(tn, d) Tf(t,q)=1, idf(t,q)约等于idf(t,d)
  6. 6. Solr Community of China www.solr.cc 三.VSM对应lucene的打分公式推导  Lucene采用的Similarity,认为在计算文档的向量长度的时候,每个Term的权重就丌再考  虑在内了,而是全部为一(如果按权重考虑会有问题)  查询语句中tf都为1,idf查询语句这篇小文档 即idf(t,q) = idf(t,d),得到如下公式
  7. 7. Solr Community of China www.solr.cc 三.VSM对应lucene的打分公式推导  代入余弦公式: 加上lucene自己的各种boost和coord
  8. 8. Solr Community of China www.solr.cc 四. Lucene评分公式的细化介绍  1协调因子 coord(q,d) coord(q,d) = overlap/ maxOverlap  overlap(命中查询个数)  maxOverlap(总查询个数)  搜索语句为: 图书名称:”红楼梦” || 作者:”红楼梦”  doc1: 图书名称:红楼梦 作者:曹雪芹 coord(q,d) = 1/2  doc2: 图书名称: 红楼梦 作者:红楼梦编委 coord(q,d) 2/2 (高)
  9. 9. Solr Community of China www.solr.cc 四. Lucene评分公式的细化介绍  2. 查询规范因子 queryNorm(q) (对排序无任何影响) queryNorm(q) = 1/(q.getBoost()^2·∑( idf(t)·t.getBoost() )^2) q.getBoost() 查询语句总权重(query上设置的boost) t.getBoost() 子查询权重(tilte:红楼梦 desc:红楼梦)
  10. 10. Solr Community of China www.solr.cc  3.文档词频因子 tf(t in d) tf(t in d) = Math.sqrt(freq)  例如 搜索 图书名称:红楼梦  文档1:图书名称:红楼梦tf=1  文档2:图书名称:红楼梦曹雪芹签名版红楼梦 tf=1.414 (高)
  11. 11. Solr Community of China www.solr.cc 四. Lucene评分公式的细化介绍 4. 文档出现频率因子 idf(t) idf(t) = 1.0 + log(numDocs/(docFreq+1))  numDocs(总文档数)  docFreq(有几个文档中出现了查询的词)  例如搜索语句为:图书名称:“红楼梦” || 作者:“曹雪芹” 总文档数为1000  如果图书名称中包含图书名称“红楼梦”的文档数为100 idf= 2.0  作者名称中包含作者“曹雪芹”的文档数为10 idf= 3.0 (高)
  12. 12. Solr Community of China www.solr.cc 四. Lucene评分公式的细化介绍 5. 查询权重t.getBoost itemName:红楼梦^10.0 itemDesc:红楼梦
  13. 13. Solr Community of China www.solr.cc 四. Lucene评分公式的细化介绍 6. 标准化因子 norm(t,d) norm(t,d) = doc.getBoost()· lengthNorm· ∏ f.getBoost() (注意:4.0以后没有了 doc.getBoost()) lengthNorm = 1.0 / Math.sqrt(numTerms)  doc.getBoost() (在每个文档上设置的权重)  f.getBoost() (在每个字段上设置的权重  lengthNorm = 1.0 / Math.sqrt(numTerms)  表示字段长度对打分的影响  例如:文档1:图书名称:红楼梦 lengthNorm = 1/1.7 (高)  文档2:图书名称: 红楼梦新刊第28期 = 1/3
  14. 14. Solr Community of China www.solr.cc 四. Lucene评分公式的细化介绍 将上面1-6部分细化的部分代入上面公式得到 score(q,d) = (overlap / maxOverlap )·(1/(q.getBoost()^2·∑( idf(t)·t.getBoost() )^2 ) ) · ∑( tf(t in d)·idf(t)^2·t.getBoost()· doc.getBoost()· lengthNorm· ∏ f.getBoost() ) 查询时确定: 1、2、3、4、5 索引时确定:6
  15. 15. Solr Community of China www.solr.cc 五. 改变评分的一般策略 API调用: 索引时刻:filed boost设置, doc boost设置 4.0之前:doc.setBoost(5.0f); 查询时刻: queryBoost设置
  16. 16. Solr Community of China www.solr.cc 五. 改变评分的一般策略 重写:Similarity (继承DefaultSimilarity或TFIDFSimilarity)
  17. 17. Solr Community of China www.solr.cc 五. 改变评分的一般策略 使用:explain 查看评分细节,修改评分策略
  18. 18. Solr Community of China www.solr.cc 六. 拍砖答疑时间
  19. 19. Solr Community of China www.solr.cc 谢谢!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×