搜索引擎,对很多人来说,熟悉又陌生。熟悉,是因为每个人每天都能接触到,比如百度、google、淘宝内部搜索;陌生,是因为鲜有人了解他的原理。
因为工作需要,有幸参与负责了一个站内搜索的项目。所以可以从实现的角度来讲讲怎么去实现一个站内检索系统。
1、为什么要使用检索系统
可能有些人会这么想,站内搜索我直接用数据库的like就可以实现。这种想法其实在实际中不太可行。首先,like语句很可能用不到搜索,因此性能低下;其次,like语句只能做比较精确的比配,相关性比较低下。比如,"我在北京玩的很好"这句话,如果你用"北京市"去搜索,肯定搜不出来,用帝都也是搜索不出来的,但是,实际上"北京市"和"帝都"以及"北京"都是一个意思;最后,站内检索系统可以做非常复杂的rank、打散以及屏蔽策略。
综上,正确认识一个检索系统是非常重要的。
2、实现最简单的检索系统
基于此,现在给大家来讲诉怎么快速搭建一个检索系统。
2.1、准备材料。
我们现在有3篇文本
D0: "it is what it is"
D1: "what is it"
D2: "it is a banana"
2.2、整理分析文本
搜索引擎整理信息的过程称为“创建索引”,常见的索引数据结构可以有多种,比如kd-tree等,我个人认为用的最多的数据结构当属倒排索引(