部分内容转自:http://blog.csdn.net/hguisu/article/details/8024799

一、 开源项目

apache lucene是apache下一个著名的开源搜索引擎内核,基于Java技术,处理索引,拼写检查,点击高亮和其他分析,分词等技术。

nutch和solr原来都是lucene下的子项目。但后来nutch独立成为独立项目。nutch是2004年由俄勒冈州立大学开源实验室模仿google搜索引擎创立的开源搜索引擎,后归于apache旗下。nutch主要完成抓取,提取内容等工作。

solr则是基于lucene的搜索界面。提供XML/HTTP 和 JSON/Python/Ruby API,提供搜索入口,点击高亮,缓存,备份和管理界面。

hadoop原来是nutch下的分布式任务子项目,现在也成为apache下的顶级项目。nutch可以利用hadoop进行分布式多任务抓取和分析存储工作。

所以,lucene,nutch,solr,hadoop一起工作,是能完成一个中型的搜索引擎工作的。

前面有一篇《apache 搜索引擎solr试用》,详细描述了单独的solr实现搜索界面的示例。

下面的部分,基于nutch,完成网页的抓取,并通过solr完成索引和搜索,实现真正的完整的搜索引擎建立流程。

1.Lucene全文检索系统
      http://lucene.apache.org和 http://www.lucene.com.cn/
      Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene的原作者是Doug Cutting,他是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些Internet底层架构的研究。早先发布在作者自己的,他贡献出Lucene的目标是为各种中小型应用程式加入全文检索功能。

2.  Nutch系统
     http://www.nutch.org和http://www.nutchchina.com
     Nutch是个完整的开放源代码的搜索引擎,是个完备的应用程序。内部实现以Lucence为基础实现搜索引擎应用.
利用Nutch经过简单设置就可以建立自己的内部网的搜索引擎,也可以针对互联网建立搜索引擎,还可以与数据库结合检索索引。

3、Solr

导言

说起Apache Lucene,可以说无人不知,无人不晓,但是说道Apache Solr,恐怕知道的不多。看看Apache Solr的说明:

Solr是一个基于Lucene java库的企业级搜索服务器,包含XML/HTTP,JSON API, 高亮查询结果,faceted search(不知道该如何翻译,片段式搜索),缓存,复制还有一个WEB管理界面。Solr运行在Servlet容器中。所以Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括Solr: Solr是Lucene面向企业搜索应用的扩展。

在本篇文章中,我们先看看Solr向我们承诺了什么,或者说Solr宣称的特性们。

无废话Solr

Solr是一个拥有象WebService一样接口的独立运行的搜索服务器。你将能够通过HTTP协议以XML格式将文档放入搜索服务器(这个过程叫做索引),你能够通过HTTP协议的GET来查询搜索服务器并且得到XML格式的结果。Solr的特性包括:

  • 高级的全文搜索功能
  • 专为高通量的网络流量进行的优化
  • 基于开放接口(XML和HTTP)的标准
  • 综合的HTML管理界面
  • 可伸缩性-能够有效地复制到另外一个Solr搜索服务器
  • 使用XML配置达到灵活性和适配性
  • 可扩展的插件体系

Solr使用Lucene并且扩展了它!

  • 一个真正的拥有动态域(Dynamic Field)和唯一键(Unique Key)的数据模式(Data Schema)
  • 对Lucene查询语言的强大扩展!
  • 支持对结果进行动态的分组和过滤
  • 高级的,可配置的文本分析
  • 高度可配置和可扩展的缓存机制
  • 性能优化
  • 支持通过XML进行外部配置
  • 拥有一个管理界面
  • 可监控的日志
  • 支持高速增量式更新(Fast incremental Updates)和快照发布(Snapshot Distribution)

Schema(模式)

  • 定义域类型和文档的域
  • 能够驱动智能处理
  • 声明式的Lucene分析器规范
  • 动态域能够随时增加域
  • 拷贝域功能允许对一个域进行多种方式的索引,或者将多个域联合成一个可搜索的域
  • 显式类型能够减少对域类型的猜测
  • 能够使用外部的基于文件的终止词列表,同义词列表和保护词列表的配置

查询

  • 拥有可配置响应格式(XML/XSLT,JSON,Python,Ruby)的HTTP接口
  • 高亮的上下文搜索结果
  • 基于域值和显式查询的片段式搜索(Faceted Search)
  • 对查询语言增加了排序规范
  • 常量的打分范围(Constant scoring range)和前缀式查询-没有idf,coord,或者lengthNorm因子,对查询匹配的词没有数量限制
  • 函数查询(Function Query)-通过关于一个域的数值或顺序的函数对打分进行影响
  • 性能优化

核心

  • 可插拔的查询句柄(Query Handler)和可扩展的XML数据格式
  • 使用唯一键的域能够增强文档唯一性
  • 能够高效地进行批量更新和删除
  • 用户可配置的文档索引变化触发器(命令)
  • 并发控制的搜索器
  • 能够正确处理数字类型,从而能够进行排序和范围搜索
  • 能够控制缺失排序域的文档
  • 支持搜索结果的动态分组

缓存

  • 可配置的查询结果,过滤器,和文档缓存实例
  • 可插拔的缓存实现
  • 后台缓存热启:当一个新的搜索器被打开时,可配置的搜索将它热启,避免第一个结果慢下来,当热启时,当前搜索器处理目前的请求(???)。
  • 后台自动热启:当前搜索器缓存中最常访问的项目在新的搜索器中再次生成,能够在索引器和搜索器变化的时候高速缓存常查询的结果
  • 快速和小的过滤器实现
  • 支持自动热启的用户级别的缓存

复制

  • 能够将使用rsync传输时改变的索引部分有效的发布
  • 使用拉策略(Pull Strategy)来简化增加搜索器
  • 可配置的发布间隔能够允许对时间线和缓存使用进行权衡选择

管理接口

  • 能够对缓存使用,更新和查询进行综合统计
  • 文本分析调试器,能够显示每个分析器每个阶段的结果
  • 基于WEB的查询和调试输出:解析查询输出,Lucene的explain方法细节,能够解释为何某个文档打分低,被排除在结果中等等

3、Heritrix项目

3.Compass
      http://wwww.compassframework.org/
      Compass是在Lucence上实现的开源搜索引擎架构,提供更加简洁的搜索引擎API. 增加了索引事务处理的支持,能够更方便地与数据库等食物处理应用进行整合。更新时更加简单、更加高效,无需删除原文档。资源与搜索引擎之间采用映射机制,Compass还能与Hibernate 、Spring架构进行集成

4.Larbin系统
      http://larbin.sourceforge.net/
    larbin是一种开源的网络爬虫/网络蜘蛛,由法国的年轻人Sébastien Ailleret独立开发,用c++语言实现。larbin目的是能够跟踪页面的url进行扩展的抓取,最后为搜索引擎提供广泛的数据来源。 Larbin只是一个爬虫,也就是说larbin只抓取网页,至于如何parse的事情则由用户自己完成。另外,如何存储到数据库以及建立索引的事情 larbin也不提供。
  latbin最初的设计也是依据设计简单但是高度可配置性的原则,因此我们可以看到,一个简单的larbin的爬虫可以每天获取500万的网页,实在是非常高效。
  利用larbin,我们可以轻易的获取/确定单个网站的所有联结,甚至可以镜像一个网站;也可以用它建立url 列表群,例如针对所有的网页进行 url retrive后,进行xml的联结的获取。或者是 mp3,或者定制larbin,可以作为搜索引擎的信息的来源。
 
5. Yioop! PHP 搜索引擎
       http://www.seekquarry.com/
       Yioop! 是一个 PHP 的搜索引擎,可用于 Web 的一般用途搜索,或者可提供URL搜索以及各种文档的索引搜索,包括:HTML, PDF, DOC, PPT, RTF, RSS, XML, SVG, PNG, JPG, BMP, GIF, 以及 sitemaps.

二、 研究网站

1,Google 黑板报 http://www.google.com.hk/ggblog/googlechinablog/
2,searchenginewatch.com大站。

3、nutch和lucene的区别
想做一个搜索引擎,最近浏览了许多社区,发现Lucene和Nutch用的很多,而这两个我总感觉难以区分概念,于是在查了些资料。下面是Lucene和Nutch创始人Doug Cutting 的访谈摘录:
 Lucene其实是一个提供全文文本搜索的函数库,它不是一个应用软件。它提供很多API函数让你可以运用到各种实际应用程序中。现在,它已经成为Apache的一个项目并被广泛应用着。这里列出一些已经使用Lucene的系统。
Nutch是一个建立在Lucene核心之上的Web搜索的实现,它是一个真正的应用程序。也就是说,你可以直接下载下来拿过来用。它在Lucene的基础上加了网络爬虫和一些和Web相关的东东。其目的就是想从一个简单的站内索引和搜索推广到全球网络的搜索上,就像Google和Yahoo一样。当然,和那些巨人竞争,你得动一些脑筋,想一些办法。我们已经测试过100M的网页,并且它的设计用在超过1B的网页上应该没有问题。当然,让它运行在一台机器上,搜索一些服务器,也运行的很好。

总的来说,我认为LUCENE会应用在本地服务器的网站内部搜索,而Nutch则扩展到整个网络、Internet的检索。当然LUCENE加上爬虫程序等就会成为Nutch,这样理解应该没错吧。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/rokii/archive/2008/03/01/2137450.aspx

简单的说:  
z  Lucene 不是完整的应用程序,而是一个用于实现全文检索的软件库。 
z  Nutch  是一个应用程序,可以以 Lucene 为基础实现搜索引擎应用。 
Lucene 为 Nutch 提供了文本索引和搜索的 API。一个常见的问题是;我应
该使用 Lucene 还是Nutch?最简单的回答是:如果你不需要抓取数据的话,应该
使用Lucene。常见的应用场合是:你有数据源,需要为这些数据提供一个搜索页
面。在这种情况下,最好的方式是直接从数据库中取出数据并用 Lucene API 建立
索引。

【搜索引擎基础知识3】搜索引擎相关开源项目及网站相关推荐

  1. 不明觉厉!Gitee大神们的算法/数学相关开源项目推荐

    现在的大厂面试,算法似乎已经成为了必考项目.当大家的业务水平相近,谁的数学与算法基础更好,谁可能就会获得更好的机会.Gitee 上也有一些数学算法的大牛,今天就为大家分享他们的开源项目,希望能给正在学 ...

  2. 【radar】毫米波雷达相关开源项目代码汇总(工具箱、仿真、2D毫米波检测、融合、4D毫米波检测、分割、SLAM、跟踪)(6)

    [radar]毫米波雷达相关开源项目代码汇总(工具箱.仿真.2D毫米波检测.融合.4D毫米波检测.分割.SLAM.跟踪)(6) Toolbox pymmw https://github.com/m6c ...

  3. PHP7 JIT 相关开源项目(JPHP)

    PHP 7.1 是否达到了最佳性能? 鸟哥惠新宸答:不能说最,别看 PHP 7.1 现在这么快,但相比其它语言,在某些场景下,还是有差距的.这跟它天然的像动态.符号表.间接引用等特性有很大关系.PHP ...

  4. 开源作者在行动:疫情防控相关开源项目推荐

    开源作者在行动:疫情防控相关开源项目推荐: https://blog.gitee.com/2020/02/03/ncov-open-source-project/

  5. 转发 微博 Qzone 微信 基础知识|存储相关的名词

    基础知识|存储相关的名词 静静呐呐呐 2020-09-23 16:10:04 存储 狭义的存储定义是指具体的某种设备,如以前软盘.CD以及硬盘等.广义上的存储是指存储设备,包括硬件存储系统.软件系统. ...

  6. PCIe基础知识及Xilinx相关IP核介绍

    补发以下以前学习PCIe总结的知识. PCIe学习笔记系列: PCIe基础知识及Xilinx相关IP核介绍 概念了解:简单学习PCIe的数据链路与拓扑结构,另外看看有什么相关的IP核. [PG054] ...

  7. asp.net mvc相关开源项目推荐

    原文地址为: asp.net mvc相关开源项目推荐 asp.net mvc ctp版本发布不到一个月时间,在社区出现了丛多的优秀开源项目,社区的活跃性非常高哦,前一段时间园子里也引发了MVC和Web ...

  8. 关键词提取自动摘要相关开源项目,自动化seo

    关键词提取自动摘要相关开源项目 GitHub - hankcs/HanLP: 自然语言处理 中文分词 词性标注 命名实体识别 依存句法分析 关键词提取 自动摘要 短语提取 拼音 简繁转换 https: ...

  9. 公共基础知识:地震相关知识

    公共基础知识:地震相关知识 近几年,我国经常遭受地震灾害的侵扰,有很多无辜的生命及财产因此而受难.那么对于危害我们生命及财产安全的的地震,大家又了解多少呢?下面就和牡丹江中公教育一起了解. 一.地震概 ...

最新文章

  1. 《Silverlight揭秘》暨《ASP.NET高级程序设计(第2版)》有奖读书笔记征集
  2. 张亚勤、张宏江:人工智能的未来是什么?
  3. Supermemo背单词7周年纪念
  4. java resource放入的文件没有生成在classes中_快速部署版@开源在线考试系统一键生成各种题型试卷且实时判卷...
  5. linux下安装Mysql(干货!!!)解决mysql 1130问题,远程登录问题
  6. MySQL :JDBC连接MySQL报错Unknown system variable 'query_cache_size'
  7. php foreach 过滤条件_PHP+Redis实现延迟任务实现完成订单
  8. matlab 图像方差,Matlab方差解析var--实例说明matlab求方差
  9. php程序员自我描述_php程序员自我评价简历范文
  10. 运动蓝牙耳机挑选要注意什么?蓝牙耳机知识科普
  11. vb mysql 转义字符,MySQL_在VB.NET应用中使用MySQL的方法, 绪言 在Visual Studio中使用 - phpStudy...
  12. freebsd 在 singel user mode 下强制设置root密码的方法
  13. 《Kubernetes故障篇:Kubernetes Node节点DiskPressure异常处理》
  14. CSS3,JS制作网页动画(时空穿梭,魔方,坠落星星,全屏樱花特效)
  15. liunx基础—zabbix5.0监控系统安装部署
  16. bzoj1787.紧急集合(倍增LCA)
  17. Springboot + mybatis搭建后台框架
  18. vue微信小程序uniapp添加悬浮菜单
  19. 从实践中学习Oracle SQL电子版下载
  20. AliOS在B-L475E-IOT01A上的应用

热门文章

  1. 蓝桥杯 试题 基础练习 特殊回文数——16行代码AC
  2. Python 测试开发教程
  3. linux-时间日期类
  4. html开启页面离线缓存,HTML5 离线缓存
  5. OpenStack 的部署T版(一)——基础环境配置
  6. 企业日志分析ELK(Logstash+Elasticsearch+Kibana)介绍及搭建
  7. pythonalert弹窗_python+selenium八:Alert弹窗
  8. minigui linux 安装与运行
  9. 消息队列mysql redis那个好_Redis作为消息队列与RabbitMQ的比较
  10. HTML怎么让正方形转动,第十讲:html5中canvas实现正方体的动态旋转