Iveely 搜索引擎0.3.0 发布 & 如何搭建自己的搜索引擎
Iveely Search Engine在经过一个月艰辛的测试之后,0.3.0终于与大家见面了,本次版本的主题是:实时信息检索。
项目及源码下载地址 http://iveelyse.codeplex.com 也许你会怀疑我指的是否是"实时搜索“?我想回答你的是,这是迈向实时搜索的一大步。那么0.3.0到底新增加了哪些东西?0.3.0中更改了爬虫策略,索引策略。 在爬虫方面,我们放弃了以前的完整遍历整个网站,采用广度遍历3000个网页后,然后下次再广度遍历3000个不同的网页且更新以前爬行过得网页,这样可以保证最新的数据可以尽快搜到。索引方面,抛弃了以往的数据结构,采用新的二维表,快速定位索引项。当然还有添加了IveelySE.Resource,用于保证资源文件的存在,因为前两个版本的时候很多网友反应有些文件找不到,现在不用担心这个问题了。当然我们还添加了Help Tools project ,例如用它可以查看IveelySE的一些数据信息,当然并不是很全面。下图是IveelySE对博客园进行爬取后的网页PageRank查看:
下面我们看一下,如何根据IveelySE 0.3.0 1分钟 搭建自己的搜索引擎。
第一步:环境配置(可选)
IveelySE是在Windows下开发的,运行环境.Net 4.0 ,请确定您的计算机或服务器上安装了.Net 4.0 ,如果你的计算机或服务器是Linux,请参考Mono安装.Net环境。如果环境都存在,请忽略此配置。
第二步:定位应用程序集:IveelySE.Run.Task.exe
在默认情况,IveelySE的应用程序都定位在\IveelySE\IveelySE.Program文件夹中,我们主要使用的是IveelySE.Run.Task.exe进行我们的任务,在上一个版
本我们已经实现了一键式运行,此刻不要认为其它文件都不重要,在IveelySE生成的每个文件都是有意义的。请不要任意删除文件。主要文件的意义如下:
文件名 含义
strai.aiml 智能应答知识文件,支持函数式扩展。
StopWord.txt 停用词文件
IveelySE.Index.exe 索引处理应用程序
IveelySE.Run.Task.exe 任务驱动机应用程序
IveelySE.Segment.exe 分词程序
IveelySE.Spider.exe 爬虫应用程序
IveelySE.Tools.exe 数据查看工具
IveelySE.AI.dll 智能应答处理程序
IveelySE.Cache.dll 缓存处理程序
IveelySE.Classify.dll 分类处理程序(暂时保留)
第三步:修改配置文件:IveelySE.Config
IveelySE.Config 是IveelySE的所以配置信息存储的地方,任何一个配置信息,都在这里配置。每一个配置项的含义如下:
配置项 含义
HighLight 高亮颜色标记
Delimiter 分隔符
TrainFile 隐马尔科夫分词模型训练文件
CrawlerTemp 爬虫数据临时存放目录
DataDir 正式数据文件存放目录
PageRankFile 网页权值存放文件
PageRankContent 网页URL关联文件
PageRankList 网页权值集合
IndexTemp 索引临时文件
IndexDir 索引文件
SystemUpdate 系统是否更新,标识系统是否存在新的数据产生
CurrentPageIndex 当前网页记录的编号
Crawler 爬虫入口地址,支持多地址,以,分隔
第四步: 执行任务,运行IveelySE.Run.Task.exe
运行截图如下:
(图一)
(图二)
第五步: 执行搜索,打开网页http://127.0.0.1:8088/query=yourkeyword
下面,你就看到了时刻搜索的信息,过一会你会看到信息的信息会出现在你的搜索结果中,哪怕是首页中刚放不久的信息。
根据上面信息你是否发现了,仅仅过了4分钟,就可以搜索到页面上的新信息。
第六步: 个性化定制搜索页面(可选)
也许你已经发现了,IveelySE搜索的客户端并没有写什么程序,完全来自于浏览器的请求。那么在浏览器这一端,你就可以自己写属于自己的搜索界面
搜索界面如何写?
根据http://127.0.0.1:8088/query=我的关键词(第一种访问方式)的搜索规则,在您的页面当中每次请求这个链接即可。详细略。如果你需要定制复杂的页面,你
也可以通过TCP\IP协议访问服务器端口5001,传入关键字,服务端会返回搜索文本(第二种访问方式)。
此时此刻,一个属于你自己的搜索引擎已经诞生,但是请别着急,我不是一个报喜不报忧的人,我还是要告诉你现阶段, IveelySE的不足之处。
1. IveelySE不适合大规模数据处理, 虽然存在BigData项目,但是现阶段0.3.0中,我取消了对大数据的支持,原因是大数据处理需要分布式,而分布式现阶段并不能为iveelySE的未来带来一定的意义,当然后期一定很有影响。现阶段更加关注IveelySE自身的特色。2. IveelySE现阶段版本,不给于任何性能保证。虽然我知道IveelySE的当前性能,对于100万URL的网站处理,可以容纳,性能也可以达到一定的要求。但是对于内存过小的服务器,CPU较弱的机器,我不能保证性能上有一定的衰减。但是,性能一定是我们关注的重要问题。
IveelySE 下一步 0.4.0的主要目标是什么呢?从0.1.0到0.3.0已经慢慢走过来,0.4.0将围绕着知识提取为主要目标。什么是知识提取?假设网页中有句话“微软亚太研发集团主席是张亚勤,他12岁考入中科大少年班。”,我们希望IveelySE能够提取里面的知识信息,让用户搜索“微软亚太研发集团主席是谁?”我们希望返回“张亚勤”,“张亚勤多少岁进入中科大少年班?”我们期望返回“12岁”。也许你觉得不可思议,但这正是IveelySE的定位信条:你最想知道什么?。如果IveelySE不坚定这个方向走下去,那么它将没有意义。
Iveely 是I void everything,enjoy loving you的首字母缩写,表达搜索人对搜索引擎的热爱,所有源码的开放,都是为了知识的共享,如果您有好的想法和建议,可以发送邮件至我:liufanping@iveely.com 或 微博,如果您想参与进来,贡献您的代码,请联系我。