http://www.rfdev.cn              e-mail: developer@rfdev.cn,  zdev@163.com
 

一.搜索引擎介绍
    搜索引擎指自动从英特网搜集信息,经过一定整理以后,提供给用户进行查询的系统。英特网上的信息浩瀚万千,而且毫无秩序,所有的信息象汪洋上的一个个小岛,网页链接是这些小岛之间纵横交错的桥梁,而搜索引擎,则为你绘制一幅一目了然的信息地图,供你随时查阅。
 
    搜索引擎的工作原理
    搜索引擎的工作原理大致可以分为:
    1、搜集信息:搜索引擎的信息搜集基本都是自动的。搜索引擎利用称为网络蜘蛛(spider)的自动搜索机器人程序来连上每一个网页上的超连结。机器人程序根据网页链到其他中的超链接,就象日常生活中所说的“一传十,十传百……”一样,从少数几个网页开始,连到数据库上所有到其他网页的链接。理论上,若网页上有适当的超连结,机器人便可以遍历绝大部分网页。
    2、整理信息:搜索引擎整理信息的过程称为“建立索引”。搜索引擎不仅要保存搜集起来的信息,还要将它们按照一定的规则进行编排。这样,搜索引擎根本不用重新翻查它所有保存的信息而迅速找到所要的资料。想象一下,如果信息是不按任何规则地随意堆放在搜索引擎的数据库中,那么它每次找资料都得把整个资料库完全翻查一遍,如此一来再快的计算机系统也没有用。
    3、接受查询:用户向搜索引擎发出查询,搜索引擎接受查询并向用户返回资料。搜索引擎每时每刻都要接到来自大量用户的几乎是同时发出的查询,它按照每个用户的要求检查自己的索引,在极短时间内找到用户需要的资料,并返回给用户。目前,搜索引擎返回主要是以网页链接的形式提供的,这些通过这些链接,用户便能到达含有自己所需资料的网页。通常搜索引擎会在这些链接下提供一小段来自这些网页的摘要信息以帮助用户判断此网页是否含有自己需要的内容。(该段介绍引自百度知道)

二.锐锋搜索引擎
    在可以免费获得商业搜索引擎服务的时代,为什么还需要自己的搜索引擎? 其理由主要有以下几点:1.政府网、企业网以及其它和互联网隔离的网络出于安全原因不能也不允许获得商业搜索引擎的服务,但随着自身网络的的成长,需要建立自己的搜索服务;2.现有的商业搜索引擎服务不能满足自己的特定要求,比如对某些特定网站的详细搜索;3.利用搜索引擎技术建立资料全文索引等其它业务目的。
    如某省级主管局已经利用锐锋搜索引擎建立了全省的行业内网搜索服务,搜集了全省约40余个网站的十数万网页,在普通PC服务器上(CPU:Intel 2.0Hz,MEM:1G),采集效率根据网络速度的差异和死链的多少大约在每小时1万页左右,查询响应时间在秒级。
    某企业利用锐锋搜索引擎建立了针对农业和农产品的专业搜索服务,其提供查询的内容都是农业相关内容,没有无关内容干扰,提高了业务人员的工作效率。

    锐锋搜索引擎是主要用Python语言实现的一种搜索引擎软件,有以下特点:
    1.可以设定从一个或者多个URL出发进行搜集,在一次搜集运行中对重复网页不会重复搜集;
    2.可以设定每个起始URL的搜集层数;
    3.可以设定搜集网站的等级,并作为搜索排序的权值之一;
    4.使用关键词进行搜索,按关键词符合程度、时间和网站的重要性权值进行排序,特别适合政府、企业等内网的特点;
    5.支持全面搜集和更新搜集,具有断点记录及继续搜集能力;
    6.搜集的同时建立索引,搜集效率高;
    7.软件可以自动运行,不需人工干预;
    8.遵守robots.txt协议,支持HTTP 1.1 gzip 压缩;
    9.支持多种平台。

三.使用说明
    锐锋搜索引擎从逻辑上分为两个部分,第一个部分是搜集与索引(Robot),第二个部分是查询(Sosoo)。
    在windows平台,可以使用专门设计的可视化设置程序,也可以和其它平台一样由系统管理员从命令行直接运行,见下图。

    (一)锐锋搜索引擎的目录结构:
    锐锋搜索引擎的查询部分使用Karrigell-2.3.5作为WEB框架,搜索引擎的执行文件和日志文件均放在Karrigell-2.3.5\webapps\soall文件目录下,数据文件放在Karrigell-2.3.5\webapps\soall\base目录下。
    (二)搜集与索引
    1.搜集前的准备:
    运行本搜索引擎首先需要安装Python2.5 (21M),还可以再安装psyco1.6 (166K)以提高运行速度。
    Python2.5安装完成以后,需要手工设置指向Python安装路径的Path环境变量。在windows中,检查“我的电脑-属性-高级-环境变量-系统变量”,其中Path变量中应增加Python2.5的安装路径,默认的Python2.5安装路径为“c:\Python25”,修改后的Path变量应该形如:“xxxxxx;xxxxxx;c:\python25”。
    准备一个起始URL文本文件,如entire_urls.txt,见下例:

http://www.agri.gov.cn,中国农业信息网 农业部,999,1
http://www.bjagri.gov.cn/login,北京农业,999,1
http://www.neooasis.com,新疆兵团,999,1
http://www.xj-agri.gov.cn,新疆农业,999,1
http://www.bjaginfo.gov.cn,北京城乡,999,1
http://www.agrisx.gov.cn,山西农村,999,1
http://www.xjxmt.gov.cn,新疆畜牧,999,1
http://www.cfc.agri.gov.cn,专业合作社,999,1
http://www.sxagri.gov.cn,山西农业,999,1
http://www.aqsc.gov.cn,无公害认证,999,1

     entire_urls.txt由多行组成,其中每一行有四个由“,”号(英文逗号)分隔开的项,第一项为URL地址,必须是由http://开头的完全地址,不得有所省略;第二项为该URL指向的网页的标题;第三项是从该URL出发的搜索层数,只搜本页为1层,本页的下级链接页为2层,以此类推。本项实际填写数值应该为(拟搜索层数+第四项-1);第四项为该URL指向的网站的排序等级,1为最高级。
     其次,准备一个与文本文件同名(扩展名不同)的URL过滤程序文件,如entire_urls.py,该程序系统已经提供。
    这是一个Python程序,它对Robot搜集的每一个链接作出判断:接受或放弃,给用户提供了最大的灵活性,在必要的情况下用户可以改动过滤程序。但改动之后请务必在Python开发环境中单独进行测试,去除bug,然后再放入搜索引擎环境中。如无必要,请不要编辑该程序。Python语言是以缩进作为语句块标识的程序语言,空白尤其是行首的空白极其重要,多一个空白少一个空白都可能造成程序错误。

    2.启动机器人(也称网络蜘蛛spider)进行搜集:
    启动机器人的方式有三种,即全新搜集、增量搜集和断点续搜。建议的搜集策略是比如一个月做一次全新搜集,每天做一次增量搜集。具体的间隔周期要根据所搜网站更新的频度、设备的能力、网络带宽等因素制定。断点续搜是指在一次搜集活动完成前,由于断电等原因造成搜集程序中途中断,数据被破坏的情况。
    全新搜集。若为全新搜集,请先确认base子目录已经删除为空,全新搜集必须在空数据状态下启动。
    全新搜集启动机器人程序的命令如:python robot.pyc entire_urls 100 200(见entire_robot.bat文件)。
    这条命令由空格分开的五部分组成,其中一、二部分是固定不变的;第三部分即为上面所讲的起始URL文件的名字(不带扩展名);第四部分为线程池大小,线程越多,并行利用网络资源的效果越好,但对目标网络的压力越大,对本机的系统资源尤其是内存要求越大。经试验,在1G内存、cpu3.0MHz的机器上线程池可以设到100左右(仍然要根据具体的设备和网络情况进行调整);第五部分为内存池大小,内存池越大,索引时读写硬盘的几率越小,但太大挤占线程和系统资源,在上条所称机器上内存池可以设到200左右。
    搜集和索引数据量和运算量都极大,时间可能比较长。在前述机器上大约在每小时1万页左右,搜集效率和设备性能、网络带宽、目标网站的效率、死链的多少以及页面所含关键词的多少都有关系。
   更新搜集。更新搜集是指在已经进行过全新搜集的情况下,对一些更新较快的页面进行频度更高的搜集以保证搜索服务的及时准确。这是在全新搜集时间较长的情况下为了保证信息的及时性采取的一项策略。更新搜集所使用的起始URL文本文件中各行的搜索层数不得过高(在全新搜集中可以设到999或更大以保证搜集的彻底性),否则搜集时间太长,更新周期不能保证。如在每天一次的更新中,建议一次更新搜集的运行时间控制在1小时左右。一次搜集运行未完成前不得执行另一次搜集程序,否则会造成数据混乱。
    更新搜集启动机器人程序的命令如下:

python robot.pyc increment_urls 100 200

(见increment_robot.bat文件)。

    increment_urls为起始URL文件的名字(不带扩展名)
    断点续搜。如果一次搜集活动由于停电、宕机等原因意外中止,可以使用断点须搜。
    断点须搜启动机器人程序的命令如下:

①将base.bak子目录中所有内容拷贝到base子目录,在windows系统下为:
xcopy base.bak base
②不改动base子目录下任何内容,执行:
python robot.pyc entire_urls 100 200(全新搜集时)
或
python robot.pyc increment_urls 100 200(更新搜集时)

    3.定时自动执行:
    启动机器人的命令可以写成批处理(见entire_robot.bat和increment_robot.bat文件)加入windows“任务计划”或用AT命令设成定时执行。但由于网络环境的复杂性,机器人程序每次执行的时间可能有一些差异,为了避免上一次搜集没有结束之前启动新的机器人程序,定时执行的时间间隔需要经过试验并留出足够的余量。
    4.提供查询服务:
    在Karrigell-2.3.5目录下执行python Karrigell.py(见start.bat文件)即可启动Karrigell-2.3.5的web服务器,从客户端浏览器访问http://搜索引擎域名或IP即可开始搜索。
    如需改变web服务器的端口号,请执行python Karrigell.py -P 端口号。默认的端口号是80。
    如服务器负荷较大,可将Karrigell接入Apache、LightTPD、Xitami等web服务器使用,具体步骤请参考Karrigell网站。

四.软件下载

    Python2.5 ( python语言,必须)

    psyco1.6 (python编译器,可加速程序运行,非必须)

    psyco1.6 for windows(167K,本地下载)

    锐锋搜索引擎程序包(2027K,本地下载) 

五.软件注册
    未注册软件每个页面只搜索8个链接,此外没有其它限制。
    注册软件只能安装在注册的服务器上,含注册第一年的技术咨询服务费(不包括上门服务)。
    注册机器码填写安装本软件的服务器的IP地址。
    软件注册。

六.FAQs

    友情链接:虚拟主机