python html5 bootstrap 视频教程

德云社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7936|回复: 0

服务器端 Java C/C++ Python 开源全文搜索 全文检索引擎汇总一览

[复制链接]

195

主题

220

帖子

1050

积分

工程师

Rank: 5Rank: 5

金钱
620
金币
6
威望
0
贡献
0
发表于 2016-10-10 00:39:20 | 显示全部楼层 |阅读模式
AI人工智能 语音助理 人工翻译 教程
服务器端 Java C/C++ Python 开源全文搜索 全文检索引擎汇总一览

01、Lucene

Lucene 是当前以及最近几年最受欢迎的免费 Java 信息检索程序库。


Lucene 是 Apache 软件基金会 4 jakarta 项目组的一个子项目,是一个开放源代码的全文搜索引擎工具包。Lucene 开发语言为 Java,是 Java 家族中最为出名的一个服务器端开源全文搜索引擎。Lucene 在 Java 语言世界已是标准全文检索程序,它提供了完整的查询引擎和索引引擎,但没有中文分词引擎,需自己实现;因此,用 Lucene 做搜素引擎需自己架构。


Lucene 不是一个完整全文检索引擎,而是一个全文检索引擎架构,它提供了完整的查询引擎和索引引擎,部分文本分析引擎 (英文与德文两种西方语言)。Lucene 的目的是为软件开发人员提供一个简易工具包,以便在目标系统中实现全文检索功能,或是以此为基础建立起完整的全文检索引擎。


Lucene 不支持实时搜索,但 linkedin 和 twitter 有分别对 Lucene 改进的实时搜索。


Lucene 有一个 C++ 移植版本叫 CLucene,CLucene 因用 C++ 编写, 所以理论上要比 Lucene 快。


10 倍以上效率提升 极速智能编辑 重构 "数字化 Python IDE" 开发工具

http://idepy.digitser.cn/

http://forum.digitser.cn/thread-2266-1-1.html


02、Sphinx

Sphinx 是一个由俄国人开发的搜索引擎,Sphinx 建索引速度是最快的,比 Lucene 快 9 倍以上。因此,Sphinx 非常适合做准实时搜索引擎。

Sphinx 是一个用 C++ 语言编写的,基于 SQL 的开源全文搜索引擎。Sphinx 可结合 MySQL、PostgreSQL 做全文搜索,它能提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化全文检索。


Sphinx 特别为一些脚本语言设计了搜索 API 接口,譬如:PHP、Python、Perl、Ruby 等,同时为 MySQL 也设计了一个存储引擎插件。


Sphinx 单一索引最大可包含1亿条记录,在1千万条记录下的查询速度为0.x秒(毫秒级)。Sphinx 创建索引的速度为:创建 100 万条记录的索引只需 3~4 分钟,创建 1000 万条记录的索引可以在 50 分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。


Lucene 出自名门,子孙兴旺,且其兄弟 Hadoop 风头正盛,所以名气很大。而 sphinx 因为简单可靠,代码结构优良,性能非常好,在国内大型网站中使用最广。


http://sphinxsearch.com/about/sphinx/


03、Xapian

Xapian 是一个用 C++ 编写的全文检索程序,它的 API 和检索原理和 lucene 在很多方面都很相似,但也有一些不同,算是填补了 lucene 在 C++ 中的一个空缺。


尽管在 Java 世界 lucene 已是标准全文检索程序,在 C/C++ 世界中虽然有一个 lucene 版本 clucene,但在业界却是一个饱受争议的使用 (毕竟是通过修改 Java 的代码改编而来的)。


Xapian 除提供原生 C/C++ 编程接口外,还提供 Perl、PHP、Python 和 Ruby 编程接口、类库。


http://xapian.org/


04、Solr

Solr 是 Apache Lucene 项目的开源企业搜索平台。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。Solr 是高度可扩展的,并提供了分布式搜索和索引复制。Solr 是最流行的企业级搜索引擎,Solr4 还增加了 NoSQL 支持。


Solr 是用 Java 编写、运行在 Servlet 容器(如 Apache Tomcat 或 Jetty)的一个独立全文搜索服务器。 Solr 采用 Lucene Java 搜索库为核心的全文索引和搜索,并具有类似 REST 的 HTTP/XML 和 JSON 的 API。Solr 强大的外部配置功能使得无需进行 Java 编码,便可对其进行调整以适应多种类型的应用程序。Solr 有一个插件架构,以支持更多的高级定制。


用户可通过 http 请求,向搜索引擎服务器提交一定格式的 XML 文件,生成索引;也可通过 Http Get 操作提出查找请求,并得到 XML 格式的返回结果。


因为 2010 年 Apache Lucene 和 Apache Solr 项目合并,两个项目是由同一个 Apache 软件基金会开发团队制作实现的。提到技术或产品时,Lucene/Solr 或 Solr/Lucene 是一样的。


Solr 支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。


http://lucene.apache.org/solr/


05、Elasticsearch

Elasticsearch 是一个采用 java 语言开发的, 基于 Lucene 架构的开源、分布式搜索引擎。可扩展到上百台服务器,处理 PB 级别的结构化或非结构化数据。Elasticsearch 设计用于云计算中,支持实时搜索,稳定可靠。Elasticsearch 数据模型为 JSON。


Elasticsearch 是一个实时分布式搜索和分析引擎。Elasticsearch 可帮你用前所未有的速度去处理大规模数据。Elasticsearch 可以用于全文搜索,结构化搜索及分析,当然也可以将这三者进行组合。Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene  基础上的搜索引擎,Lucene 是当今最先进,最高效的全功能开源搜索引擎框架。


但 Lucene 只是一个框架,要充分利用它,需要使用 JAVA,并在程序中集成 Lucene。需要很多的学习了解,才能明白它是如何运行的,Lucene 确实非常复杂。Elasticsearch 使用 Lucene 作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的 API 即可,而不需要了解其背后复杂的 Lucene 运行原理。


Elasticsearch 并不只是面向大型企业的,它还帮助了很多类似 DataDog 以及 Klout 的创业公司进行功能扩展。


维基百科使用 Elasticsearch 来进行全文搜做并高亮显示关键词,及提供 search-as-you-type、did-you-mean 等搜索建议功能。


英国卫报使用 Elasticsearch 处理访客日志,以便将公众对不同文章的反应实时地反馈给各位编辑。


StackOverflow 将全文搜索与地理位置和相关信息进行结合,以提供 more-like-this 相关问题的展现。


GitHub 使用 Elasticsearch 来检索超过 1300 亿行代码。


Goldman Sachs 使用它来处理 5TB 数据的索引,还有很多投行使用它来分析股票市场的变动。


http://www.elasticsearch.org/


06、Nutch

Nutch是一个用 java 实现的开源 web 搜索引擎, 包括爬虫 crawler、索引引擎、查询引擎。Nutch 基于 Lucene,Lucene 为 Nutch 提供了文本索引和搜索 API。


对于应使用 Lucene 还是使用 Nutch,若你不需要抓取数据,则应使用 Lucene。


常见的应用场合是:你有数据源,需要为这些数据提供一个搜索页面。在这种情况下,最好的方式是直接从数据库中取出数据并用 Lucene API 建立索引。


在你没有本地数据源,或者数据源非常分散的情况下,应该使用 Nutch。


http://nutch.apache.org/


07、DataparkSearch

DataparkSearch 是一个用 C 语言实现的开源搜索引擎,网页排序采用神经网络模型。


DataparkSearch 支持 HTTP、HTTPS、FTP、NNTP 等下载网页。包括索引引擎、检索引擎和中文分词引擎 (这也是唯一一个开源搜索引擎中,有中文分词的引擎)。


http://www.dataparksearch.org/


08、Zettair

Zettair 是根据 Justin Zobel 的研究成果为基础的全文检索实验系统,Zettair 是用 C 语言实现的。


Justin Zobel 在全文检索领域很有名气,是业界第一个系统提出倒排序索引差分压缩算法的人,倒排列表的压缩大大提高了检索和加载的性能,同时,空间膨胀率也缩小到相当优秀的水平。由于 Zettair 是源于学术界,代码由 RMIT University 的搜索引擎组织编写;因此,它的代码简洁精炼、算法高效, 是学习倒排索引经典算法的非常好的实例。


Zettair 是一个基于倒排序索引结构的全文搜索开源引擎,由 RMIT 墨尔本皇家理工大学开源实现。搜索引擎通常都是建立在一个特殊结构之上,称之为倒排序索引,这样可以快速响应查询。但是这样对于查询存在两个缺点。第一个,倒排序索引必须在查找之前建立好,第二,索引结构需要额外的电脑硬盘空间。但是上面的问题都是可以被忽略的,因为如果索引一天被用到成千上百次,从无数的文档中来查找你所有需要的信息,这也是值得的。


Zettair 基于 C 语言编写,无论是在 CPU、内存、还是在索引结构存储消耗空间,还是查询时间消耗,性能指标都是较为出色的。Zettair 同时支持增量索引, 结果摘要, 文件类型选择, 词根替换, 结果排序, 排序策略, 搜索类型,,基于小数据集(TREC-4)和大数据集(WT10g)。


Zettair 支持 Linux、windows、mac os 等系统。


http://www.seg.rmit.edu.au/zettair/about.html


09、Indri

Indri 是一个用 C 语言和 C++ 语言编写的开源全文检索引擎系统,由 University of Massachusetts 和 Carnegie Mellon University 卡耐基-梅隆大学 Lemur 项目组维护并持续开发API 接口支持 Java, PHP, C++。


尽管 Indri 只是 Lemur 信息获取工具系列的一部分,然而由于其使用最新的语言模型,高效的索引技术,完整的搜索引擎解决方案,不乏为搜索相关专业及爱好者研究之典范。


Indri 支持结构化查询语言 INQUERY;支持 PDF,HTML,XML,TREC 格式文档以及 Windows 下的 Word 和 PPT 格式文档的索引。支持 T 量级数据的分式处理。最新版本的 Indri 支持高效动态文档索引,允许在更新索引的同时接受查询,并号称具有 15G/小时的索引性能。


http://www.lemurproject.org/indri/


10、Terrier

Terrier 是由 School of Computing Science, Universityof Glasgow 用 java 开发的一个开源全文检索系统。


Terrier 在 IR 领域非常有影响力,Terrier 具有高效灵活及易于部署等特点,目前最新的版本为 Terrier 4.1。


Terrier 的整个工作过程,需先建立索引,然后根据自定义的 query phrases (查询短语,当然也可以是句子),在已建立的索引上查询,并返回结果。


http://terrier.org/


11、Galago

Galago 是一个用 java 语言写的文本搜索工具集。包括索引引擎、查询引擎, 还包括一个叫 TupleFlow 的分布式计算框架 (和 google 的 MapReduce 很像)。


Galago 检索系统支持很多 Indri 查询语言。


http://www.lemurproject.org/galago.php


12、Zebra

Zebra 是一个用 C 语言实现的检索程序,特点是对大数据的支持, 支持 EMAIL, XML, MARC 等格式的数据。


https://www.indexdata.com/zebra


13、Whoosh

Whoosh 是一个用纯 python 实现的,类似 Lucene 的开源全文搜索引擎。Whoosh 不但功能完善,还非常快。Whoosh 是目前最快的纯 python 全文搜索引擎。


Whoosh 的作者是 MattChaput,由 Side Effects Software 公司开发。项目最初用于 Houdini(Side Effects Software 公司开发的 3D 动画软件)在线帮助系统。Side Effects Software 公司将该项目开源。


Whoosh 从其他的开源搜索引擎中获取了大量的灵感。 基础构建参考 Lucene,使用 KinoSearch 的索引算法,部分评分算法来自 Terrier,英文的词语态变化来自 Minion。



14、Katta

Katta 基于 Lucene,支持分布式、可扩展,具有容错功能,准实时搜索方案。


Katta 可开箱即用,可与 Hadoop 配合实现分布式。Katta 具备扩展和容错机制。


Katta 搜索方案,建索引部分还需要自己实现。在搜索功能上,只实现了最基本的需求。成功案例较少,项目的成熟度稍微差。因为需要支持分布式,对于一些复杂的查询需求,定制的难度比较大。



扫一扫关注 德云社区

版权声明:
本文由 德云社区 大数据采集软件采集新闻汇编,转载请注明出处。


AI人工智能 语音助理 人工翻译 教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|Sitemap|小黑屋|德云社区 |网站地图  

GMT+8, 2024-4-27 00:43 , Processed in 0.027873 second(s), 27 queries .

工业和信息化部: 粤ICP备14079481号-2

技术支持 乐数软件     版权所有 © 2014-2021 德云社区    

快速回复 返回顶部 返回列表