python html5 bootstrap 视频教程

德云社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6739|回复: 0

服务器端 Java 开源全文搜索 全文检索引擎及其变种汇总一览

[复制链接]

194

主题

288

帖子

1322

积分

超级版主

Rank: 8Rank: 8

金钱
798
金币
15
威望
0
贡献
0
发表于 2016-10-17 22:01:59 | 显示全部楼层 |阅读模式
AI人工智能 语音助理 人工翻译 教程
服务器端 Java 开源全文搜索 全文检索引擎及其变种汇总一览

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 快。


http://lucene.apache.org/

http://sourceforge.net/projects/clucene/


02、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/


03、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/


04、Nutch

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


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


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


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


http://nutch.apache.org/


05、Terrier

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


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


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


http://terrier.org/


06、Galago

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


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


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


07、Katta

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


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


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



长按二维码关注 "德云社区" ,点击最下方 "阅读原文" 了解更多资讯

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 20:56 , Processed in 0.024953 second(s), 27 queries .

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

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

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