网站千万级内链系统架构实现方案
千万级内链系统架构方案一:分词技术。
核心的内容点就在于分词技术的使用。中文分词技术,采用大量的算法,优化查找过程。执行流程如下:
a、 将需要内链的关键词,添加到词典内。添加到什么地方的词典?当然是添加到分词词典。目前的分词技术,主要还是基于词典的分词。我们把默认的词典保留最小化版本。再把我们的内链词,添加到自定义词典内。标记为一个特殊的词性。下面会有代码演示。
b、 使用分词技术对一篇文章进行分词切词处理。
c、 输出带指定词性(即我们添加的关键词词典)的关键词。即可得到本文的所有包含关键词信息。
d、 查询关键词的链接,添加替换文章内容即可。
这种方式看起来复杂程度也是比较高的,但是可以实现百万内的内链快速查询。响应和处理时间也在一两秒以内可以完全成功识别。
市面上可以使用中文分词的工具非常多。比如:结巴分词、IK分词、MMSeg、盘古分词等等。
有兴趣的可以放大研究。使用分词工具的方式,10万词,在2秒内可以计算得出。如果以服务化的形式词库驻内存,加上并发优化。性能还可以进一步提高。
总结这种方式:把内链词,建立为自定义词库,标记为自定义词。然后用自定义去切词分词。最后切出来的结果是带词性的,只输出我们设置的自定义词性的词,就能快速得到结果。
为什么分词会比传统方式更快呢。因为分词算法已经进行了大量的优化,使用了很多算法在代码里面进行优化。
这里面还可以进行很多优化,比如重写一些分词的核心逻辑,只使用自定义词进行分词,不是自定义词的一率删除不处理。服务化为Web服务,词典常驻内存;增加处理并发量等。都是可以实施的方案。
中小型企业10万或者百万内链,应该是能满足需求了。
千万级内链系统架构二:千万级的内链系统架构。
千万级的内链架构是百万级架构基础上的升级。依然依托外部工具实现,这次使用的是全文检索引擎。
单机离线使用Lucenue全文引擎配合自定义词库加中文分词器。分布式非实时业务,可以使用SolrCloud分布式或者单机使用。分布式实时业务,可以使用ElasticSearch加上自定义词库及中文分词技术,进行技术实施。
核心的原理和方案一是一样的,只是使用定制开发过后的代码,能极大的提升系统的可用性和实时性。在ES架构上面。亿级的分词检索,可以秒级返回数据。
千万级使用ElasticSearch需要一些二次开发。不在本文讨论范围内。