Lucene系列(一)代码结构

2017-08-17
阅读 2 分钟
5.5k
最近一直在看Lucene的源码和文档,把看到的一些东西总结一下,整个Lucene的代码也大体的撸了一遍了,Lucene的代码写得真是不错,结构简单明了,扩展性也非常强,基本上所有的模块都是接口型的,几乎都有扩展的可能,并且可以以非侵入式的方式进行扩展,后来的在Lucene之上的Elasticsearch也很好的继承了这一点,扩展性也...

你真的了解跳跃表吗

2017-05-24
阅读 3 分钟
11k
最近换了工作,因为工作的需要,也正好自己想好好研究一下Java这门牛逼的语言,看了一下ElasticSearch和Lucene的源码,之前从来没有写过也没有看过Java的东西,所以也算是恶补了一下Java吧,由于是从C程序员开始的,所以对这种带虚拟机的语言总有一些偏见,老觉得内存不好控制,所以一直以来都没有怎么碰过Java,最近静...

分布式搜索引擎(二)

2016-05-25
阅读 3 分钟
5.1k
前面已经有一篇分布式搜索引擎了,主要介绍的是搜索引擎的索引分片和数据同步,实际上是解决的分布式的问题,最后我给出了一个图 这个图最后出来的是一个低可用的分布式搜索引擎,今天我们要解决的问题是把这个低变成高,今天这篇非常简单,没有任何高级技术,看完你就知道了。 1. 为什么会是低可用 我们得知道为什么这...

面壁人VS智子 --- 搜索排序的作弊和反作弊

2016-05-23
阅读 5 分钟
4k
搜索引擎已经是目前网络流量最大入口,在大搜上,基本上大家打开网页做的第一件事情就是打开一个搜索引擎,然后键入你感兴趣的内容,然后开始浏览。如果是个电商的网站,你打开以后,基本上也是直接键入你感兴趣的内容,然后开始浏览。

分布式搜索引擎设计

2016-05-19
阅读 6 分钟
9.2k
我个人感受啊,分布式和高可用是随着最近这些年阿里的双11活动火起来的,放眼全球,好像没有哪个公司的系统会在瞬间承接这么大的流量,并且还是绝对不能出错的交易流量,所以阿里确实积累了全球最丰富的高可用和分布式的经验,再加上各种技术大会一分享,这两个词就变成一个互联网公司技术系统的标配了。

用Golang写一个搜索引擎(0x0B)--- 第一部分结束

2016-05-18
阅读 3 分钟
5.1k
这一篇算给这一个系列告一个小的段落,之前开始写这些文章的时候,只是想把自己最近用Golang写的这个搜索引擎说一说,准备了大概3,4篇的量,但是一写下来,发现有点收不住,写到后面其实和Golang没什么关系了,主要在写搜索引擎的架构和一些数据结构了,我觉得这比写代码注释有用吧,而且通过这样写下来,我自己对这些...

搜索引擎(0xFD) --- 论长尾词

2016-05-16
阅读 4 分钟
4.9k
今天的标题是论长尾词,长尾词是什么?在百度百科上,长尾词解释是:非目标关键词但也可以带来搜索流量的关键词。这是一个明显的SEM的长尾词解释,简单来说,长尾词就是那些个每天搜索量不是很多,但是一直都有搜索量的词。

用Golang写一个搜索引擎(0x0A)--- 数据检索,败者树,K路求交

2016-05-12
阅读 5 分钟
7.6k
终于把序号写到了第十篇(其实已经是第13篇了),前面写了几个外篇,我看上篇机器学习的那篇看的人很多,后面会再找一两个点再写写,后面可能会算法部分和架构部分穿插着写了,想到哪里就写哪里了,今天我们继续我们的搜索引擎架构部分,主要来说说数据的检索。

搜索引擎(0xFE)--- 用机器学习再谈排序

2016-05-09
阅读 5 分钟
10k
这里没有标记颜色,可能看起来重点不突出,可以去微信页面观看这里 前面说排序的时候已经简单了说了一下排序的方法,包括三部分:相关性排序,商品本身的属性排序,个性化排序,无论怎么排,大体上都逃不掉这三项。 最近看到一篇文章有赞搜索引擎实践(算法篇),中间有一段也说了如何对商品本身的属性进行排序,感兴趣的...

用Golang写一个搜索引擎(0x09)— 数据增,删,改

2016-05-06
阅读 3 分钟
4.6k
按照步骤,说完段层以后,应该就开始涉及到索引层了,但我想说的是一个分布式的搜索引擎,所以除了索引层以外,还有个分片层,这两个概念是紧密联系在一起的,我怕说不好,所以在说索引层和分片层之前,我们先直观的对索引有个了解,并且先熟悉一下索引层的一些特殊的数据结构以及一些常用算法,让大家对搜索引擎有个整...

用Golang写一个搜索引擎(0x08)--- 索引的段

2016-05-04
阅读 4 分钟
5.8k
我觉得这个标题应该改改了,我写下来其实是告诉大家怎么写一个搜索引擎,并没有涉及太多的Golang的东西,我觉得这样也挺好,熟悉了原理,用什么实现其实并不重要了,而且说说原理比说代码更实在。

用Golang写一个搜索引擎(0xFF)--- 搜索引擎排序

2016-04-27
阅读 5 分钟
5.3k
爬虫水太深了,各种黑科技层出不穷,光代理的选择就有各种黑科技,而且只有百度这种全网搜索引擎或者某些靠爬数据的细分领域的垂直搜索引擎才需要爬虫,重要的是我也不是很了解这一块,所以就说不了了,我么默认数据都是自有的数据,类似电商的搜索引擎。

用Golang写一个搜索引擎(0x07)--- 正排索引

2016-04-24
阅读 5 分钟
7.1k
最近各种技术盛会太多,朋友圈各种刷屏,有厂商发的各种广告,有讲师发的各种自拍,各种参会的朋友们各种自拍,好不热闹,不知道你的朋友圈是不是也是这样啊,去年还没这么多技术会议,今年感觉爆发了,呵呵,真是一个互联网技术的好时代,而且还有各种撕B可看,真想八一八,怕得罪人,我们这种码农还是专注技术专注写代...

用Golang写一个搜索引擎(0x06)--- 索引构建

2016-04-20
阅读 4 分钟
7.9k
不知不觉写到第七篇了,按这个节奏,估计得写到15到20篇左右才能写完,希望自己能坚持下去,之前写代码的时候很多东西并没有想得那么细致,现在每写一篇文章还要查一些资料,确保文章的准确性,也相当于自己复习了一下吧,呵呵。

用Golang写一个搜索引擎(0x05)--- 文本相关性排序

2016-04-18
阅读 3 分钟
6.5k
上面我们已经说过了一些倒排索引的东西,并且也知道了如何来实现一个倒排索引完成检索功能,那么检索完了以后如何排序呢,这一篇简单的说一下倒排索引的文本相关性排序,因为排序实在是太复杂了,我们这里就说说文本的相关性排序,而且是最简单的TD-IDF排序,之后有机会可以再说说整个搜索的排序算法有些什么。

用Golang写一个搜索引擎 (0x04) --- B+树

2016-04-15
阅读 5 分钟
10.8k
前面两章介绍了一下倒排索引以及倒排索引字典的两种存储结构,分别是跳跃表和哈希表,本篇我们介绍另一种数据结构,他也被大量使用在信息检索领域,我在github上实现的搜索引擎的词典也是用的这个数据结构,它就是B+树。

用Golang写一个搜索引擎(0x03)--- 跳跃表,哈希表

2016-04-13
阅读 4 分钟
7.3k
前面已经说了倒排索引的基本原理了,原理非常简单,也很好理解,关键是如何设计第二个倒排表,倒排表的第二列也很好设计,第一列就是关键了,为了满足快速查找的性能,设计第一列的结构,我们需要满足以下两个条件。

用Golang写一个搜索引擎(0x02)--- 倒排索引技术

2016-04-11
阅读 3 分钟
9.5k
这一篇,我们来说说搜索引擎最核心的技术,倒排索引技术,倒排索引可能需要分成几篇文章才说得完,我们先会说说倒排索引的技术原理,然后会讲讲怎么用一些数据结构和算法来实现一个倒排索引,然后会说一个索引器怎么通过文档来生成一个倒排索引。

用Golang写一个搜索引擎(0x01)--- 基本概念

2016-04-10
阅读 2 分钟
9k
从零开始,写一个搜索引擎 (0x01) 第零部分我们已经列了一个提纲了,这一篇文章开始要详细说说了。 搜索引擎基本概念 在说搜索引擎架构分层之前,我们先确定几个搜索引擎的概念。 文档,搜索引擎的基本数据单元,比如一张网页,一个商品,多个文档合在一起就是一个搜索引擎的完整数据 倒排索引,正排索引,存储在搜索...

用Golang写一个搜索引擎 (0x00)--- 从零开始

2016-04-09
阅读 2 分钟
11.5k
很早就想写一系列的这样的文章了,之前在一个电商公司做搜索,对搜索引擎有一些认识,来到一个新的创业公司以后非常高兴还有机会继续做这方面的事情,虽然领域已经变了,而且不是做搜索了,但是技术还是那些技术,并且有机会接触到了Go语言,对于一个将近10年C/C++的程序员来说,Go的一些特质让我觉得非常舒服,可参见我...