如何写一个简单的搜索引擎
一直在用sphinx,只是在用的程度而已,不是太明白它的具体原理,最近想花一段时间(我也不知道多久,一直使用php,最近得改用java写些代码了)慢慢的把搜索引擎迁移到Elasticsearch,同时订制一些服务和功能。
所以还是想明白下它的原理啦,明白原理后写个简单的搜索引擎还是不太难的。
搜索引擎大致分为三部分
1 爬虫-数据准备,我们这种垂直搜索都是自己的源了。
2 建立索引
3 搜索
爬虫
不谈。我们的数据来源是我们的几百万条记录
你可以写个爬虫去网上抓取你想要的任意数据。
爬虫注意
1 标识已经抓取的记录
2 死循环
建立索引
通过词库,把文档建立成拆分成一个个词汇和文档id对应的列表,当然还记录了其他信息,比如分词在文档中出现的文字,次数,等等,建立一棵树
搜索
对搜索词进行分词,找到词库里面的词,对词库的文档id进行打分,根据打分进行排序
参考上面的原理,再到网上找一些算法一一实现,咱们就可以写一个简单的搜索引擎了。