百分百命中的搜索引擎

百分百命中的搜索引擎?

没错,倒排索引的结构,一般常见的做法是分词后丢弃词库里没用的部分,那么词库里增加新词就是悲剧!~~

隔几天维护了词库就全部重新分词一遍?前年“给力”不算词,现在谁都说,你伤不起呀~~

坑爹呀!海量数据,频繁重新分词你分不起,有木有?有木有?

要想百分百命中,永远不重新分词,全部地球的文字组合就不要丢掉,考虑存哪儿。

文件,没错!~~文件可以存储最大量的信息。只要是O(1)查找,IO再慢,也是秒杀的。

本人的实践,第一层文件夹是单个字母或汉字,第二层是两个字,第三层3个字,第四层4个字,没有第五层了,够用了。

每个层最多65536个文件夹,最多一个文件,单个字不考虑做索引,如果你做也可以,那文件巨大,而且实用意义几乎没有,谁会查单个字母?单个字?(叫做"播"的单字品牌,这概率太小了。)

四层就是65536^4=2^16^4=2^64个文件夹,相应数量的文件,2^64个词汇,地球上,几辈子,够用了,即使如果再不够,加深一层文件夹,立马成为2^128.欢迎来到阿凡达星球。

这个词库就是考虑2,3,4个汉字的全部组合,那么用户输入5个字,6个字咋办?

5=2+3=3+2
6=3+3=2+4=4+2=2+2+2

我认为,算法理论也是这么说的:C*O(1)还是O(1),我们依旧完全可以秒杀。

分词和倒排索引(词库命中部分在内存中),还有索引文件,这部分至少3台机器,分布式是必须的。消息队列是必须的。

加上数据采集,Web服务器台,反向代理,K-V缓存。。。。

目前我的系统已经有8台了,而且是各个环节单点验证阶段,还没有热备,今年计划增加到270+台。

以前的我是以节省服务器为目的,现在的我是以增加服务器为目的。

信息检索技术就是硬件的堆砌,技术的堆砌,给我一堆服务器,我能翘起地球。

你可能感兴趣的:(搜索引擎)