用Golang写一个搜索引擎(0x0B)--- 第一部分结束
这一篇算给这一个系列告一个小的段落,之前开始写这些文章的时候,只是想把自己最近用Golang写的这个搜索引擎说一说,准备了大概3,4篇的量,但是一写下来,发现有点收不住,写到后面其实和Golang没什么关系了,主要在写搜索引擎的架构和一些数据结构了,我觉得这比写代码注释有用吧,而且通过这样写下来,我自己对这些个数据结构的理解也更深了。 一个月的时间,写了14篇了,虽然14篇文字不足以说明一个搜索引擎的实现,但我觉得基本上一些重要的东西我都说了,搜索引擎本身原理上其实比较简单,并且我们并没有涉及搜索引擎爬虫的部分,所以说起来并不是很复杂,复杂是复杂在外围一些算法上的东西,比如分词,比如排序之类的。 来看看我们都说了些啥
然后除了上面这些,穿插的说了一下搜索引擎的一些外围的技术,包括文本相关性,排序,机器学习和长尾词的一些问题。 照这样,第一部分应该差不多可以结束了,一个单机版的搜索引擎只需要上面一些东西就可以完整的实现了,也欢迎大家去我的github上看看,目前开源出来的就是一个简单的单机版的搜索引擎了,主要的结构如下,很简单的,欢迎提交bug,由于是自己的玩具项目,没有写单元测试,代码中的_test.go文件都是功能测试。
但是,这个系列也远没结束,关于搜索引擎还有好多可以说的,并且索引分片和分布式都还没开始呢,只是第一部分的单机版的结束了,后面会用一个系列说一下搜索引擎的分布式实现,当然代码也会跟着更新。 后面的文章更新还是会围着搜索,推荐和广告这三个方面来说,我觉得这三个其实是一体的,用的技术也差不多,算法上三个看上去有区别,其实底层也差不太多,特别是广告,简直就是推荐+搜索的组合,所以文章在架构和算法上也都会涉及到,当然也会有比较扯淡的文章,比如今天这篇。 最后,既然是Golang写的搜索引擎,那么我们来聊聊Golang吧。用了快一年的Golang了,我是从C/C++转过来的,之前近10年都在和C++打交道,除了C/C++,用过python,objective-C,C#,Lua,Erlang,很抱歉,没有用过世界上最好的语言PHP,也没有用过世界上最火的语言JAVA(用来写hadoop作业应该不算用JAVA吧),我个人觉得Golang设计出来完全就是一门工程性的语言,工程性非常强,确实很适合后台类型的开发。 这里不做语言之争,仅写写我的一些感受吧,总的来说,我个人觉得Golang非常棒。 我们来先说好的
坏的呢?
总的来说,我还是非常非常推荐Golang的,下次有时间试试Rust,看看如何,不过我个人不太看好Rust,现在编程语言这么多,还有PHP这种王牌语言,一个崭新的语言后面没有一个强大的公司支撑的话,最后不管多牛逼也只能呵呵。 最后,我的这个开源项目(https://github.com/wyh267/FalconEngine),我会坚持写下去,变成一个分布式的搜索引擎,希望在性能上能达到ES的水平吧,也欢迎大家关注,之前是为了熟悉搜索引擎本身数据结构,所以自己撸了很多基础代码,后面为了能让更多人用起来,也为了稳定性我会引入一些开源的组件而不是自己造轮子了。 想看之前所有文章,可以关注公众号,然后点击公众号的菜单即可:)或者直接看SF的专栏也行。 欢迎关注我的公众号,文章会在这里首先发出来:)扫描或者搜索微信号XJJ267或者搜索中文西加加语言就行 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |