![](https://img-blog.csdnimg.cn/0601703434da4f8d89af699bd16ab1a0.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
从0到1写一个搜索引擎
文章平均质量分 88
使用go语言从0到1写一个搜索引擎
小生凡一
Talk is cheap. Show me the code.
展开
-
【Golang系统开发】搜索引擎(3) 压缩倒排索引表
假设我们的数据集中有 800000 篇文章,每篇文章有 200 词条,每个词条有6个字符,倒排记录数目是 1 亿。那么如果我们倒排索引表中单单记录文档id,不记录文档内的频率和偏移信息。那么 文档id 的长度就必须是log280000020bit(文档可能每篇文章都存在,所以是以最长的长度要求),所以我们整个未压缩的倒排索引表的大小大概有,倒排记录数 * 文档id大小 = 100,000,000 * 20/8 = 250 MB。原创 2023-08-19 14:50:10 · 1337 阅读 · 0 评论 -
【Golang系统开发】搜索引擎(1) 如何快速判断网页是否已经被爬取
在实际工作中,我们经常需要判断一个对象是否存在,比如判断用户注册登陆时候,需要判断用户是否存在,再比如搜索引擎中的爬虫,判断该网页是否已经爬过,减少一些重复的工作。首先我们需要优化存储的数据结构,不是int,虽然char和bool类型都是1字节,相比较于4/8字节的int类型,已经提升了4/8倍了(32位的机器是4 byte,64位的机器是8 byte),但是其实用字节作为单位来存储一个flag类型也是很浪费的,flag类型的直接使用bit类型的就可以了。原创 2023-07-29 01:10:03 · 939 阅读 · 0 评论 -
【Golang系统开发】搜索引擎(2) 压缩词典
这篇文章我们就给出一系列的数据结构,使得词典能达到越来越高的压缩比。当然,和倒排索引记录表的大小相比,词典只占据了非常小的空间。那么为什么要对词典进行压缩呢?因此,词典压缩的主要目的是可以将词典放在内存当中,这样才会获得很高的查询吞吐率。那么如何能将更多的词典压缩在有限的内存中呢?原创 2023-08-17 09:39:29 · 988 阅读 · 0 评论 -
【Go语言开发】简单了解一下搜索引擎并用go写一个demo
这篇文章我们一起来了解一下搜索引擎的原理,以及用go写一个小demo来体验一下搜索引擎。原创 2023-07-14 08:33:50 · 4572 阅读 · 1 评论