More Related Content
Similar to Search Engine Principle
Similar to Search Engine Principle (20)
Search Engine Principle
- 9. 倒排索引
DocID 内容
1 谷歌地图之父跳槽Facebook
2 谷歌地图之父加盟Facebook
3 谷歌地图创始人拉斯离开谷歌加盟Facebook
4 谷歌地图之父跳槽Facebook与Wave项目取消有关
5 谷歌地图之父拉斯加盟社交网站Facebook
单词ID 单词 文档频率DF 倒排列表 PostingList (DocID;TF;<POS>)
1 谷歌 5 (1;1;<1>),(2;1;<1>),(3;2;<1;6>),(4;1;<1>),(5;1;<1>)
2 地图 5 (1;1;<2>),(2;1;<2>),(3;1;<2>),(4;1;<2>),(5;1;<2>)
3 之父 4 (1;1;<3>),(2;1;<3>),(4;1;<3>),(5;1;<3>)
4 跳槽 2 (1;1;<4>),(4;1;<4>)
5 Facebook 5 (1;1;<5>),(2;1;<5>),(3;1;<8>),(4;1;<5>),(5;1;<8>)
6 加盟 3 (2;1;<4>),(3;1;<7>),(5;1;<5>)
7 创始人 1 (3;1;<3>)
8 拉斯 2 (3;1;<4>),(5;1;<4>)
9 离开 1 (3;1;<5>)
10 与 1 (4;1;<6>)
- 11. 搜索布尔模型
word1 DF
word2 DF
51
96
9917
50
49 61 75 96
494818 20115
word1 AND word2: 5, 49, 96
word1 OR word2: 1, 5, 11, 17, 18, 20, 48, 49, 50, 61, 75, 96, 99
Editor's Notes
- 那么多记录,为什么那么快?
- 引出索引的概念
- 动词OR名词
总之,加快搜索效率都可以称为索引
- 哈希加链表
B树(B+树)
TRIE树
- skipList 跳表
https://www.elastic.co/blog/frame-of-reference-and-roaring-bitmaps
2^31-1 = 2,147,483,647
- 引出数字怎么办~ 如何快速查询的呢
- 例子以10进制:250314
Int 32bit
Float IEEE754 32bit
Long 64bit
Double IEEE754 64bit
Date 转为数字
- GeoHash 11位能精确到1m
笛卡尔分层模型 20层能精确到1m
- Geohash: 经纬度不断对半拆分,base32编码
- coord(q,d) 评分因子,基于文档中出现查询项的个数。越多的查询项在一个文档中,说明文档的匹配程度越高。
queryNorm(q)查询的标准查询
tf(t in d) 指项t在文档d中出现的次数frequency。具体值为次数的开根号。
idf(t) 反转文档频率, 出现项t的文档数docFreq
t.getBoost 查询时候查询项加权
norm(t,d) 长度相关的加权因子
越多罕见的词项被匹配上,文档分数越高
文档字段越短,文档分数越高
权重越高(无论是索引期还查询期赋予的权重值),文档得分越高
TFIDFSimilarity
BM25Similarity