搜索引擎简介

转自:http://blog.csdn.net/feige2008/article/details/7084168php

开放源代码搜索引擎为人们学习、研究并掌握搜索技术提供了极好的途径与素材,推进了搜索技术的普及与发展,使愈来愈多的人开始了解并推广使用搜索技术。使用开源搜索引擎,能够大大缩短构建搜索应用的周期,并可根据应用需求打造个性化搜索应用,甚至构建符合特定需求的搜索引擎系统。搜索引擎的开源,不管是对技术人员仍是普通用户,都是一个福音。html

    • 搜索引擎的工做流程主要分为三步:从互联网抓取网页→建立抓取网页的索引库→从索引库中进行搜索。前端

      首先须要一个能访问网络的爬虫器程序,依据URL之间的关联性自动爬行整个互联网,并对爬行过的网页进行抓取收集。当网页被收集回来后,采用索引分析程序进行网页信息的分析,依据必定的相关度算法(如超连接算法)进行大量计算,建立倒排序的索引库。索引库建好后用户就能够经过提供的搜索界面提交关键词进行搜索,依据特定的排序算法返回搜索结果。所以,搜索引擎并非对互联网进行直接搜索,而是对已抓取网页索引库的搜索,这也是能快速返回搜索结果的缘由,索引在其中扮演了最为重要的角色,索引算法的效率直接影响搜索引擎的效率,是评测搜索引擎是否高效的关键因素。java

      网页爬行器、索引器、查询器共同构成了搜索引擎的重要组成单元,针对特定的语言,如中文、韩文等,还须要分词器进行分词,通常状况下,分词器与索引器一块儿使用建立特定语言的索引库。它们之间的协同关系如图1所示。mysql

      开源搜索引擎

      而开放源代码的搜索引擎为用户提供了极大的透明性,开放的源代码、公开的排序算法、随意的可定制性,相比于商业搜索引擎而言,更为用户所须要。目前,开放源代码的搜索引擎项目也有一些,主要集在中搜索引擎开发工具包与架构、Web搜索引擎、文件搜索引擎几个方面,本文概要介绍一下当前比较流行且相对比较成熟的几个搜索引擎项目。linux

      开源搜索引擎工具包web

      1.Lucene算法

      Lucene是目前最为流行的开放源代码全文搜索引擎工具包,隶属于Apache基金会,由资深全文索引/检索专家Doug Cutting所发起,并以其妻子的中间名做为项目的名称。Lucene不是一个具备完整特征的搜索应用程序,而是一个专一于文本索引和搜索的工具包,可以为应用程序添加索引与搜索能力。基于Lucene在索引及搜索方面的优秀表现,虽然由Java编写的Lucene具备天生的跨平台性,但仍被改编为许多其余语言的版本:Perl、Python、C++、.Net等。sql

      同其余开源项目同样,Lucene具备很是好的架构,可以方便地在其基础上进行研究与开发,添加新功能或者开发新系统。Lucene自己只支持文本文件及少许语种的索引,而且不具有爬虫功能,而这正是Lucene的魅力所在,经过Lucene提供的丰富接口,咱们能够根据自身的须要在其上添加具体语言的分词器,针对具体文档的文本解析器等,而这些具体的功能实现均可以借助于一些已有的相关开源软件项目、甚至是商业软件来完成,这也保证了Lucene在索引及搜索方面的专一性。目前,经过在Lucene的基础上加入爬行器、文本解析器等也造成了一些新的开源项目,如LIUS、Nutch等。而且Lucene的索引数据结构已经成了一种事实上的标准,为许多搜索引擎所采用。数据库

      2.LIUS

      LIUS即Lucene Index Update and Search的缩写,它是以Lucene为基础发展起来的一种文本索引框架,和Lucene同样,一样能够看做搜索引擎开发工具包。它在Lucene的基础上做了一些相应的研究及添加了一些新的功能。LIUS借助于许多开源软件,能够直接对各类不一样格式/类型的文档进行文本解析与索引,这些文档格式包括MS Word、MS Excel、MS PowerPoing、RTF、PDF、XML、HTML、TXT、Open Office及JavaBeans等,对Java Beans的支持对于进行数据库索引很是有用,在用户进行对象关系映射(如:Hibernate、JDO、TopLink、Torque等)的数据库链接编程时会变得更加精确。LIUS还在Lucene的基础上增长了索引更新功能,使针对索引的维护功能进一步完善。而且支持混和索引,能够把同一目录下与某一条件相关的全部内容整合到一块儿,这种功能对于须要对多种不一样格式的文档同时进行索引时很是有用。

      3.Egothor

      Egothor是一款开源的高性能全文搜索引擎,适用于基于全文搜索功能的搜索应用,它具备与Luccene相似的核心算法,这个项目已经存在了不少年,而且拥有一些积极的开发人员及用户团体。项目发起者Leo Galambos是捷克布拉格查理大学数学与物理学院的一名高级助理教授,他在博士研究生期间发起了此项目。

      更多的时候,咱们把Egothor看做一个用于全文搜索引擎的Java库,可以为具体的应用程序添加全文搜索功能。它提供了扩展的Boolean模块,使得它能被做为Boolean模块或者Vector模块使用,而且Egothor具备一些其余搜索引擎所不具备的特有功能:它采用新的动态算法以有效提升索引更新的速度,而且支持平行的查询方式,可有效提升查询效率。在Egothor的发行版中,加入了爬行器、文本解析器等许多加强易用性的应用程序,融入了Golomb、Elias-Gamma等多种高效的压缩方法,支持多种经常使用文档格式的文本解析,如HTML、PDF、PS、微软Office文档、XLS等,提供了GUI的索引界面及基于Applet或者Web的查询方式。另外,Egothor还能被方便地配置成独立的搜索引擎、元数据搜索器、点对点的HUB等多种且体的应用系统。

      4.Xapian

      Xapian是基于GPL发布的搜索引擎开发库,它采用C++语言编写,经过其提供绑定程序包可使Perl、Python、PHP、Java、Tck、C#、Ruby等语言方便地使用它。

      Xapian仍是一个具备高适应性的工具集,使开发人员可以方便地为他们的应用程序添加高级索引及搜索功能。它支持信息检索的几率模型及丰富的布尔查询操做。Xapian的发布包一般由两部分组成:xapian-core及xapian-bindings,前者是核心主程序,后者是与其余语言进行绑定的程序包。

      Xapian为程序开发者提供了丰富的API及文档进行程序的编制,并且还提供了许多编程实例及一个基于Xapian的应用程序Omega,Omega由索引器及基于CGI的前端搜索组成,可以为HTML、PHP、PDF、PostScript、OpenOffice/StarOffice、RTF等多种格式的文档编制索引,经过使用Perl DBI模块甚至能为MySQL、PostgreSQL、SQLite、Sybase、MS SQL、LDAP、ODBC等关系数据库编制索引,并能以CSV或XML格式从前端导出搜索结果,程序开发者能够在此基础上进行扩展。

      5.Compass

      Compass是在Lucene上实现的开源搜索引擎架构,相对比于Lucene而言,提供更加简洁的搜索引擎API。增长了索引事务处理的支持,使其可以更方便地与数据库等事务处理应用进行整合。它更新时无需删除原文档,更加简单更加高效。资源与搜索引擎之间采用映射机制,此种机制使得那些已经使用了Lucene或者不支持对象及XML的应用程序迁移到Compass上进行开发变得很是容易。

      Compass还能与Hibernate、Spring等架构进行集成,所以若是想在Hibernate、Spring项目中加入搜索引擎功能,Compass是个极好的选择。

      开源Web搜索引擎系统

      1.Nutch

      Nutch是Lucene的做者Doug Cutting发起的另外一个开源项目,它是构建于Lucene基础上的完整的Web搜索引擎系统,虽然诞生时间不长,但却以其优良血统及简洁方便的使用方式而广收欢迎。咱们可使用Nutch搭建相似Google的完整的搜索引擎系统,进行局域网、互联网的搜索。

      2.YaCy

      YaCy是一款基于P2P(peer-to-peer)的分布式开源Web搜索引擎系统,采用Java语言进行编写,其核心是分布在数百台计算机上的被称为YaCy-peer的计算机程序,基于P2P网络构成了YaCy网络,整个网络是一个分散的架构,在其中全部的YaCy-peers都处于对等的地位,没有统一的中心服务器,每一个YaCy-peer都能独立的进行互联网的爬行抓取、分析及建立索引库,经过P2P网络与其余YaCy-peers进行共享,而且每一个YaCy-peer又都是一个独立的代理服务器,可以对本机用户使用过的网页进行索引,而且采起多机制来保护用户的隐私,同时用户也经过本机运行的Web服务器进行查询及返回查询结果。

      YaCy搜索引擎主要包括五个部分,除普通搜索引擎所具备的爬行器、索引器、反排序的索引库外,它还包括了一个很是丰富的搜索与管理界面以及用于数据共享的P2P网络。

      开源桌面搜索引擎系统

      1.Regain

      regain是一款与Web搜索引擎相似的桌面搜索引擎系统,其不一样之处在于regain不是对Internet内容的搜索,而是针对本身的文档或文件的搜索,使用regain能够轻松地在几秒内完成大量数据(许多个G)的搜索。Regain采用了Lucene的搜索语法,所以支持多种查询方式,支持多索引的搜索及基于文件类型的高级搜索,而且能实现URL重写及文件到HTTP的桥接,而且对中文也提供了较好的支持。

      Regain提供了两种版本:桌面搜索及服务器搜索。桌面搜索提供了对普通桌面计算机的文档与局域网环境下的网页的快速搜索。服务器版本主要安装在Web服务器上,为网站及局域网环境下的文件服务器进行搜索。

      Regain使用Java编写,所以能够实现跨平台安装,能安装于Windows、Linux、Mac OS及Solaris上。服务器版本须要JSPs环境及标签库(tag library),所以须要安装一个Tomcat容器。而桌面版自带了一个小型的Web服务器,安装很是简单。

      2.Zilverline

      Zilverline是一款以Lucene为基础的桌面搜索引擎,采用了Spring框架,它主要用于我的本地磁盘及局域网内容的搜索,支持多种语言,而且具备本身的中文名字:银钱查打引擎。Zilverline提供了丰富的文档格式的索引支持,如微软Office文档、RTF、Java、CHM等,甚至可以为归档文件编制索引进行搜索,如zip、rar及其余归档文件,在索引过程当中,Zilverline从zip、rar、chm等归档文件中抽取文件来编制索引。Zilverline能够支持增量索引的方式,只对新文件编制索引,同时也支持按期自动索引,其索引库能被存放于Zilverline可以访问到的地方,甚至是DVD中。同时,Zilverline还支持文件路径到URL的映射,这样可使用户远程搜索本地文件。

      Zilverline提供了我的及研究、商业应用两种许可方式,其发布形式为一个简单的war包,能够从其官方网站下载(http://www.zilverline.org/)。Zilverline的运行环境须要Java环境及Servlet容器,通常使用Tomcat便可。在确保正确安装JDK及Tomcat容器后只需将Zilverline的war包(zilverline-1.5.0.war)拷贝到Tomcat的webapps目录后重启Tomcat容器便可开始使用Zilverline搜索引擎了。

    • 搜索引擎相关站点(转)

      Fri, 18 May 2007 14:14:47 +0800

      原想找VC++的Lucene开源代码,没想到目标没找到却搜到这个,无论了,先转过来

      1,基本策略
      http://www.lib.berkeley.edu/TeachingLib/Guides/Internet/Strategies.html
      不少著名大学图书馆都有作教搜索的主页,加州伯克利过去半年进步很大,在网上全部免费搜索教程中,已可稳居第一。特色是偏学术化,学生及专业人士更适用。对搜索基本策略的把握很出色,但对搜索引擎的的了解与使用不够。

      2,《Searcher》杂志 http://www.infotoday.com/searcher/
      《Online》杂志http://www.onlinemag.net/default.htm
      互联网上,最优秀的搜索者、最新最高明的搜索经验在searcher杂志和online杂志。惟一的问题是它们是收费刊物,每期只提供少许文章的全文供免费阅读,但这已够你受用的。

      3,Webmasterworld
      http://www.webmasterworld.com/
      http://www.webmasterworld.com/home.htm
      是互联网上关于搜索引擎的最好论坛。虽然主要讨论搜索引擎注册和排名,但它对搜索引擎的变化反应之快,对搜索引擎的细节挖掘之深,如云高手对搜索引擎的看法之精,"令人们对搜索引擎的认识达到了一种新的高度"――Pandia语。

      4,Searchtools
      http://www.searchtools.com/
      互联网上最好的搜索产品研究网站,内容涉及搜索引擎技术和产品相关的新闻、评论、会议、调查、比较、选购、原理、源码、背景、设计、建议。这里的"搜索产品"定义比较广义,这里没有yahoo或google的地位,搜索者就不用去了,留给制做者、购买者、研究者吧。

      5,Search Engine Conference
      http://www.infonortics.com/searchengines/
      搜索引擎工业界的年度盛会。若是你要了解各搜索引擎和各大搜索引擎公司的技术动向,没有比这更好的地方了。

      6,Researchindex
      http://citeseer.nj.nec.com/cs
      收录了互联网上最丰富的搜索引擎技术论文。

      7,Search Engine Watch
      http://searchenginewatch.com/《SearchDay》http://searchenginewatch.com/searchday/archives.html
      是互联网上关于搜索引擎的最大网站,偏搜索引擎新闻和注册排名。网站过去的积累适合了解搜索引擎的过去,杰出杂志《Search Day》适合了解搜索引擎的如今。

      8,搜索论坛
      http://newbbs2.sina.com.cn/index.shtml?search:search
      9,搜索研究院
      http://202.101.8.5/9238/index.htm
      10,中文搜索引擎指南
      http://www.search-chinese.com/
      前面提到的都是英文网站,若是你须要中文的,那么,我推荐搜索论坛、搜索研究院、中文搜索引擎指南,搜索论坛有最多的高手,搜索研究院有最纯粹最高明的搜索技巧、中文搜索引擎指南有最全的资讯。

      中文的可能是乏尚可存。原创的网站我认为只有三个,专业搜索引擎网站只有一个
      http://www.9283.net
      http://seek.sowang.com/
      http://www.smtinline.com/html-ch/search-ch.htm
      http://www.se-express.com/article/article15.htm都缺少原创内容。

      11,搜索引擎技术
      http://www.asp121.com/seo/1/
      http://www.fullsearcher.com/
      http://bokegu.com/forums/1933/ShowPost.aspx
      http://www.se-express.com/se/se07.htm
      搜索引擎技术与应用
      http://www.sowang.com/SEARCH/search%20engine.htm
      在应用中加入全文检索功能
      ——基于Java的全文索引引擎Lucene简介
      http://www.chedong.com/tech/lucene.html
      Web搜索引擎设计和实现分析 (转载)
      http://bbs.tsinghua.edu.cn/frames.php

      12,搜索引擎里头的"牛人"

      1)http://www.hylanda.com/home.htm
      2)http://www.google.com
      3)http://www.baidu.com
      4)http://e.pku.edu.cn

      13,开源搜索引擎
      1)天网千帆http://project.mytianwang.cn/
      2)哈尔冰工大:http://sf.hit.edu.cn/index_zh.php

      14.中文分词

      中文搜索引擎技术揭密:中文分词: http://news.csdn.net/news/newstopic/15/15333.shtml
      我本身设计的中文分词算法:http://www.tianyablog.org/blogger/xmseo/archives/2006/6536.html
      简易中文分词实现完整代码及字典下载(更新):http://php.twomice.net/show_hdr.php?xname=BORRG11&dname=P7SRG11&xpos=19
      PHP简易中文分词(SCWS) 第3版 - 在线演示 (by hightman):http://scws.tguanlim.com/
      中文分词的简要实现:http://www.urok.cn/blogs/338c2f01-58fe-429d-957d-ec402a769e8b.aspx

      15,好多相关资料哦
      http://itfly.com/blog/?page=7


      16.索引技术

      Lucene倒排索引原理
      http://www.zhanglihai.com/blog/c_296.html
      索引原理初探
      http://www.wzbox.com/bbs/html/2006-2-27/20392371621.html


      17.数据采集

      中国协议分析网:http://www.cnpaf.net/
      FTP协议:
      http://www.longen.org/E-K/detaile~k/FTP.htm

      socket编程原理:http://www.chinaunix.net/jh/4/198859.html

      Linux网络编程:http://www.douzhe.com/mirrors/fanqiang.com/a4/b7/index.html

      Linux多线程编程:http://linux.chinaunix.net/doc/program/2001-08-11/642.shtml

      Linux进程通讯 :http://www.study888.com/computer/pro/vc/system/200506/39159.htmlhttp://www.study888.com/computer/pro/vc/system/200506/39159.html
      Linux上实现双向进程间通讯管道
      http://www.linuxeden.com/doc/22370.html

      Linux多进程编程 : http://study.ddlcn.cn/article/dnpx/czxt/linux/2005-01-17/linux1-34-627.html
      http://www.study888.com/computer/pro/c/jiqiao/200506/37452_2.html


      18.WEB访问

      C写CGI程序:http://www.study888.com/computer/pro/c/jiqiao/200506/37643.html


      19.数据库编程

      c语言操做数据库(mysql):详细见本blog中一篇c语言操做mysql的文章
      c语言文件操做:http://www.it-zh.cn/html/program/c/496/49959.html
      http://www.21control.com/RTOS/Linux/200605/RTOS_20060506102433.html

      Lucene倒排索引原理http://www.blogjava.net/zhyiwww/archive/2006/07/07/57122.html

相关文章
相关标签/搜索