一、Lucene 介绍
Lucene最初是由Doug Cutting开发的,在SourceForge的网站上提供下载。
在2001年9月做为高质量的开源Java产品加入到Apache软件基金会的 Jakarta家族中。
随着每个版本的发布,这个项目得到明显的增强,也吸引了更多的用户和开发人员。
Search with Apache Solr...@ Core (Java) Solr PyLucene Large, Vibrant community
The goal of Apache Lucene and Solr is to provide world class search capabilities
The Apache LuceneTM project develops open-source search software, including:
Lucene Core, our flagship sub-project, provides Java-based indexing and search technology, as well as spellchecking, hit highlighting and advanced analysis/tokenization capabilities.
SolrTM is a high performance search server built using Lucene Core, with XML/HTTP and JSON/Python/Ruby APIs, hit highlighting, faceted search, caching, replication, and a web admin interface.
PyLucene is a Python port of the Core project.
Doug Cutting 是谁?接触大数据的都知道Hadoop。Hadoop这个名字不是一个缩写,而是一个虚构的名字。该项目的创建者,Doug Cutting解释Hadoop的得名 :“这个名字是我孩子给一个棕黄色的大象玩具命名的。我的命名标准就是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子恰恰是这方面的高手。”
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆
IBM的开源软件eclipse 的2.1版本中也采用了Lucene作为帮助子系统的全文索引引擎,相应的IBM的商业软件Web Sphere中也采用了Lucene。Lucene以其开放源代码的特性、优异的索引结构、良好的系统架构获得了越来越多的应用。
Lucene是一个高性能、可伸缩的信息搜索(IR)库。它可以为你的应用程序添加索引和搜索能力。Lucene是用java实现的、成熟的开源项目,是著名的Apache Jakarta大家庭的一员,并且基于Apache软件许可 [ASF, License]。同样,Lucene是当前非常流行的、免费的Java信息搜索(IR)库。
二、Lucene的优点
Lucene作为一个全文检索引擎,其具有如下突出的优点:
(1)索引文件格式独立于应用平台。Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。
(2)在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。
(3)优秀的面向对象的系统架构,使得对于Lucene扩展的学习难度降低,方便扩充新功能。
(4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。
(5)已经默认实现了一套强大的查询引擎,用户无需自己编写代码即可使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询(Fuzzy Search[11])、分组查询等等。
面对已经存在的商业全文检索引擎,Lucene也具有相当的优势。
首先,它的开发源代码发行方式(遵守Apache Software License[12]),在此基础上程序员不仅仅可以充分的利用Lucene所提供的强大功能,而且可以深入细致的学习到全文检索引擎制作技术和面向对象编程的实践,进而在此基础上根据应用的实际情况编写出更好的更适合当前应用的全文检索引擎。在这一点上,商业软件的灵活性远远不及Lucene。
其次,Lucene秉承了开放源代码一贯的架构优良的优势,设计了一个合理而极具扩充能力的面向对象架构,程序员可以在Lucene的基础上扩充各种功能,比如扩充中文处理能力,从文本扩充到HTML、PDF[13]等等文本格式的处理,编写这些扩展的功能不仅仅不复杂,而且由于Lucene恰当合理的对系统设备做了程序上的抽象,扩展的功能也能轻易的达到跨平台的能力。
最后,转移到apache软件基金会后,借助于apache软件基金会的网络平台,程序员可以方便的和开发者、其它程序员交流,促成资源的共享,甚至直接获得已经编写完备的扩充功能。最后,虽然Lucene使用Java语言写成,但是开放源代码社区的程序员正在不懈的将之使用各种传统语言实现(例如.net framework[14]),在遵守Lucene索引文件格式的基础上,使得Lucene能够运行在各种各样的平台上,系统管理员可以根据当前的平台适合的语言来合理的选择。
lucene有7个包需要导入:analysis,document,index,queryParser,search,store,util
三、其他搜索引擎
Lucene是目前最受欢迎的Java全文搜索框架
Nutch是开源Java搜索引擎
ElasticSearch就是一款基于Lucene框架的分布式搜索引擎
Solandra 是一个实时的分布式搜索引擎
IndexTank是一套基于Java的索引-实时全文搜索引擎实现
Compass是一个强大的,事务的,高性能的对象/搜索引擎映射(OSEM:object/search engine mapping)与一个Java持久层框架
Solr也是基于Java实现的,并且是基于Lucene实现的,Solr的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果。
LIRE是一款基于Java的图片搜索框架,其核心也是基于Lucene的,利用该索引就能够构建一个基于内容的图像检索(content- based image retrieval,CBIR)系统,来搜索相似的图像。
Egothor是一个用Java编写的开源而高效的全文本搜索引擎。
Sphinx是一个用C++语言写的开源搜索引擎,也是现在比较主流的搜索引擎之一,在建立索引的事件方面比Lucene快50%,但是索引文件比Lucene要大一倍,因此Sphinx在索引的建立方面是空间换取事件的策略,在检索速度上,和lucene相差不大,但检索精准度方面Lucene要优于Sphinx,另外在加入中文分词引擎难度方面,Lucene要优于Sphinx.其中Sphinx支持实时搜索,使用起来比较简单方便.
Xapian是一个用C++编写的全文检索程序,它的api和检索原理和lucene在很多方面都很相似,算是填补了lucene在C++中的一个空缺.
DataparkSearch是一个用C语言实现的开源的搜索引擎. 其中网页排序是采用神经网络模型. 其中支持HTTP,HTTPS,FTP,NNTP等下载网页.包括索引引擎,检索引擎和中文分词引擎(这个也是唯一的一个开源的搜索引擎里有中文分词引擎).能个性化定制搜索结果,拥有完整的日志记录.
Whoosh是一个用纯python写的开源搜索引擎.
四、搜索引擎工作原理
(爬、抓、处理、搜索)
第一步:爬行
搜索引擎是通过一种特定规律的软件跟踪网页的链接,从一个链接爬到另外一个链接,像蜘蛛在蜘蛛网上爬行一样,所以被称为“蜘蛛”也被称为“机器人”。搜索引擎蜘蛛的爬行是被输入了一定的规则的,它需要遵从一些命令或文件的内容。
第二步:抓取存储
搜索引擎是通过蜘蛛跟踪链接爬行到网页,并将爬行的数据存入原始页面数据库。其中的页面数据与用户浏览器得到的HTML是完全一样的。搜索引擎蜘蛛在抓取页面时,也做一定的重复内容检测,一旦遇到权重很低的网站上有大量抄袭、采集或者复制的内容,很可能就不再爬行。
第三步:预处理
搜索引擎将蜘蛛抓取回来的页面,进行各种步骤的预处理。
⒈提取文字
⒉中文分词
⒊去停止词
⒋消除噪音(搜索引擎需要识别并消除这些噪声,比如版权声明文字、导航条、广告等……)
5.正向索引
6.倒排索引
7.链接关系计算
8.特殊文件处理
除了HTML 文件外,搜索引擎通常还能抓取和索引以文字为基础的多种文件类型,如 PDF、Word、WPS、XLS、PPT、TXT 文件等。我们在搜索结果中也经常会看到这些文件类型。 但搜索引擎还不能处理图片、视频、Flash 这类非文字内容,也不能执行脚本和程序。
第四步:排名
用户在搜索框输入关键词后,排名程序调用索引库数据,计算排名显示给用户,排名过程与用户直接互动的。但是,由于搜索引擎的数据量庞大,虽然能达到每日都有小的更新,但是一般情况搜索引擎的排名规则都是根据日、周、月阶段性不同幅度的更新。
相关推荐
- **基本查询**:了解如何使用Lucene进行简单的文本匹配查询。 - **高级查询技术**:包括布尔查询、短语查询、范围查询等多种复杂的查询方式。 - **查询优化**:讨论提高查询效率的方法,如缓存机制、查询重写等。 ...
标题“lucene简单介绍及solr搭建使用”涉及了两个主要的开源搜索技术:Lucene和Solr。Lucene是Java开发的一个全文检索库,而Solr则是基于Lucene构建的企业级搜索平台,提供了更高级的功能和管理界面。 **Lucene简介...
Lucene,作为Apache软件基金会的一个顶级项目,是一个高度成熟、广泛使用的全文检索引擎架构。它为开发者提供了一套强大的工具,用于在各种应用中实现高效的全文搜索功能。这个“lucene基本包”包含了Lucene的核心...
《Lucene简单代码实例解析》 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个简单的API,使得开发者可以方便地在自己的应用程序中集成全文检索功能。...
Apache Lucene是一个非常流行的开源全文检索库,由Apache软件基金会提供。它为开发者提供了构建全文搜索功能的工具包,包括完整的查询引擎和索引引擎。Lucene的目标是为软件开发人员提供简单易用的工具包,方便地在...
**Lucene for Java 简单DEMO** Lucene 是一个全文搜索引擎库,由Apache软件基金会开发并维护,它提供了一个高效、可扩展的搜索框架,使得开发者可以轻易地在自己的应用程序中集成全文检索功能。Java是Lucene的主要...
起初,Lucene 在 Doug 的个人网站上发布,后来移至 SourceForge,并最终在 2001 年底成为 Apache 基金会 Jakarta 项目的一部分,现在可以在 Apache 的官方网站上找到(http://lucene.apache.org)。 **全文检索的...
Apache Solr 和 Lucene 是两个在全文搜索领域广泛使用的开源框架。它们的组合为构建高效、可扩展的搜索引擎提供了强大的工具。以下是对这两个组件及其在搜索模块设计实现中的关键知识点的详细说明: 1. **Apache ...
《Lucene之HelloWorld》 在信息技术领域,搜索引擎是一个不可或缺的部分,而Apache Lucene作为一款高性能、全文本搜索库,为开发者提供了强大的文本检索能力。本文将深入探讨如何使用Lucene进行基本操作,通过...
【Lucene介绍】 Lucene是一个基于Java的全文检索库,由Apache软件基金会的Jakarta项目维护。它不是一个完整的全文搜索引擎,而是一个可嵌入到其他应用程序中的库,用于实现高效、快速的全文检索功能。Lucene的目标...
Apache Lucene是一个高性能、全功能的文本搜索引擎库,广泛应用于各种系统中用于实现高效、精准的全文检索功能。这个示例代码将向我们展示如何使用Lucene来创建一个索引,并执行一个包含"java"关键字的查询。 首先...
根据提供的信息,“lucene-6.5.1”这一标题及描述表明了本文将围绕Lucene 6.5.1版本展开,介绍该版本的主要功能、特性以及如何进行下载安装等知识点。 ### Lucene 6.5.1简介 Apache Lucene是一款高性能、全功能的...
4. `org.apache.lucene.search.Query` 和 `org.apache.lucene.queryparser.classic.QueryParser`:理解查询的构建和解析过程。 5. `org.apache.lucene.search.Searcher`:研究搜索过程,特别是如何计算相关性和返回...
【标题】"spring-lucene简单项目" 描述了一个基于Spring框架整合Apache Lucene的实践案例。Lucene是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎的开发。在这个项目中,我们将深入探讨如何将这两者结合,以...
本例子将介绍如何使用 Lucene 进行基本的索引和查询操作。 首先,我们需要引入 Lucene 的依赖。在 Java 项目中,你可以通过 Maven 或 Gradle 将 Lucene 添加到你的构建文件中。例如,如果你使用 Maven,可以在 `pom...
以上就是Lucene索引器实例的基本介绍,通过这个实例,我们可以理解到如何使用Lucene来创建、管理和搜索文本索引。在实际项目中,可以根据需求选择合适的存储(如硬盘目录或分布式存储)、优化分析器配置、处理大量...
在信息技术领域,搜索引擎的实现是一项关键的技术,而Apache Lucene作为一款开源全文检索库,为开发者提供了强大的文本搜索功能。本文将深入探讨如何编写你的“第一个Lucene程序”,帮助你理解和掌握Lucene的基本...