1. 倒排索引作用:
- es使用了倒排索引的结构,用于快速的全文搜索.
- 类似于mysql建议对应的索引,提高查询速度.
- 一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表.
2. 实现方案:
(1). 原始文档:
文档ID 文档内容
-------------------------
1 | PHP入门
2 | java20天精通
3 | go web设计
- es的文档集有3个文档,每个文档有一个文档唯一值ID(1,2,3…).
- 如果没有倒排索引,要查询”PHP”两个字,只能一个一个文档去查.
(2). 倒排索引(DocID):
单词ID 单词 倒序列表(DocID)
-----------------------------------
1 | PHP | 1,2,4,10
2 | java | 4,5,9,23
3 | go | 4,5,86,45
- 倒排索引会利用中文分词在文档中,提取出不重复的单词.
a. 使用分词系统将文档自动切分成单词序列.
b. 每个文档就转换为由单词序列构成的数据流. - 每一个单词有一个唯一的id,还有相应单词的文档.
a. 需要对每个不同的单词序列赋予唯一的单词编号.
b. 同时记录下哪些文档包含这个单词.
(3). 倒排索引(DocID;TF):
单词ID 单词 倒序列表(DocID;TF)
---------------------------------------------
1 | PHP | (1;1),(2;1),(4;1),10;1)
2 服务器托管网 | java | (4;1),(5;1),(9;1),(23;1)
3 | go | (4;1),(5;1),(86;1),(45;1)
- TF表示单词频率信息,即这个单词在某个文档中的出现次数.
- 因为词频信息在搜索结果排序时,计算查询和文档相似度是很重要的一个计算因子.
- 方便后续排序时进行分值计算.
(4). 倒排索引(DocID,,TF):
单词ID 单词 倒序列表(DocID,,TF)
----------------------------------------------------
1 | PHP | (1,,1),(2,,1),(3,,2)
- 表示单词在某个文档出现的位置信息.
- (3,,2)表示在文档ID3出现过2次,位置分别是3和9.
(5). 总结:
有了这个索引系统,搜索引擎可以很方便地响服务器托管网应用户的查询:
- 用户输入”Facebook”.
- 搜索系统查找倒排索引,从中可以读出包含这个单词的文档,提供给用户作为搜索结果.
- 额外的功能:
a. 利用单词频率信息、文档频率信息对候选搜索的结果进行排序.
b. 计算文档和查询的相似性.
c. 按照相似性得分由高到低排序输出.
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: State of GPT (ChatGPT 原理及现状介绍)
State of GPT 演讲信息: 演讲人:Andrej Karpathy (现在OpenAI任职),之前是特斯拉视觉研发负责人,斯坦福深度学习入门课程 CS231N 讲师 演讲主题:受到微软 BUILD2023 邀请,介绍 GPT 的原理及研发现状,介绍大…