上海总部
南京公司
合肥公司
徐州公司
杭州服务中心
宁波服务中心
闻道软件工作室开发的几款软件和的技术有不少重叠,如即将上线的projSpider.com其实就是一款简单的垂直搜索引擎,此外我们在多个项目中应用到的网络爬虫模块也是搜索引擎技术中的重要一环。
虽然闻道软件工作室的工程师中并没有人参与过大型搜索引擎的开发,但对此都很感兴趣。本文根据一些类似的项目经历和公开的资料,对搜索引擎相关技术作一个浅解。
1、 爬虫(Spider)——数据来源
作为搜索引擎海量数据的来源,爬虫是搜索引擎技术的重要一环,闻道软件工作室有自己开发的爬虫,所以对此技术很熟悉。
爬虫的英文是Spider,其实翻译成蜘蛛更容易理解,无数网站的链接构成了一张巨大的网,搜索引擎的内容采集程序就像一只只勤劳的蜘蛛在这张网上爬来爬去,每遇到一个感兴趣的节点便记录下来留待其他的程序处理。
爬虫的实现其实不难,笔者用C++开发出一套爬虫的雏形只有500行左右的代码,而用python的话,不足100行。
但是,任何程序只要牵扯到了海量数据处理其开发难度和开发周期也会变得非常之大。举一个简单的例子,判断一个链接是否抓取过,这是爬虫每分析出一个链接后都要做的判断。如果此时你的内存中只有几千、几万的链接,即使是一条条的遍历对比也能基本上满足要求,可如果是十万、百万、千万、亿级别呢?红黑树这些算法勉强可以应付,十亿、百亿、千亿、万亿的级别呢?只能建立索引了。
百度技术委员会理事长陈尚义透露,“百度每天处理的数据量将近100个PB,1PB就等于100万个G,相当于5000个国家图书馆的信息量的总和”。
如此庞大的数据,百度的技术实力可见一斑。
除了搜索引擎外其实很多场景都应用到了爬虫技术。如现在新兴的舆情分析系统、数据挖掘系统等。
现在越来越多的企业意识到数据的重要性,爬虫作为一个重要的数据来源,将来肯定会在更多领域得到应用。
2、 中文分词 ——数据预处理
中文分词也是搜索引擎中一个重要的技术,分词是否精准直接关系到查询结构是否符合搜索者的搜索意图
中文分词相对于英文分词来说难度大很多,因为英文有天然的分隔符,每个单词都是一个意思.如“WenDao Software Studio”可以很简单的根据空格分成“WenDao”,“ Software”,“Studio”三个词。而对于对应的中文“闻道软件工作室”,可以有“闻/道/软/件/工/作/室”、“闻道/软/件/工作/室”、“闻道/软件/工作室”等等很多种分法。
中文分词是一个需要研究很深入的领域,当然,目前也有一些比较不错中文词库,极大的简化了开发者的工作。
3、 全文检索 ——数据预处理
建立索引是在大数据量查询时必不可少的重要方法。对于建立了索引的数据,我们可以在很短的时间内从海量数据中搜索到相同的数据。
为了便于理解,我们可以把索引想象成一本书的目录,有了目录我们就可以在较短的时间内迅速找到我们感兴趣的内容,而不必一页页翻开去找。
全文检索需要在中文分词之后才能完成,需要把一个文章分成一个个关键词然后分别建立索引,这样才能达到从文章内容中搜索的目的。
4、 排序 ——数据预处理
排序是搜索引擎中非常重要的一环,排序不合理同样会极大的伤害,而很多为了提高自身的排名又有许多作弊的手段,这使得排序算法的开发难度更大。
搜索引擎能获取的参数也就几种,无论排序算法如何变化,那也只是调整这些参数的权重而已,以下列举两个重要的参数。
a)、内容
现在的搜索引擎非常重视用户体验,所以这将是所有影响排名的最重要的参数。
如何判断一个网站的内容质量高低?原创度是一个重要标准。比较常见的原创度判断算法有基于空间向量的余弦算法,算法的根据是关键词的频度和权重,对于很多做伪原创的站长来说,这个值得研究。
b)、外链
外链仍然是搜素引擎评价一个网站质量的重要标准。在此不再赘述。
5、查询 ——数据显示
很多人认为百度、Google等搜索引擎能够在那么短时间内在海量数据中找到结果,查询算法的难度一定非常复杂,其实不然。相反,这是搜索引擎技术中最简单的一环。它们之所以快,是因为经过前面几个步骤,它们早就准备好了数据等待你的查询。
原文:http://www.wendaoruanjian.com/?p=38
© 2011-现在 智火营销 版权所有