Lucene漫谈
lucene 基本概念

lucene 基本概念Lucene 基本概念Lucene 是一个开源的全文搜索引擎库,被广泛地应用于高性能搜索和索引任务中。
它是 Apache 软件基金会的一个开源项目,并且被许多知名的商业产品使用。
本文将通过一步一步的方式,来介绍 Lucene 的基本概念和其原理。
一、Lucene 是什么?Lucene 是一个基于 Java 的全文搜索引擎库。
它提供了一系列的 API 和工具,用于创建、维护和搜索大规模文本数据集。
通过将文本数据索引到 Lucene 的索引库中,我们可以快速地进行全文搜索、排序和过滤等操作。
二、Lucene 的基本原理1. 倒排索引倒排索引是 Lucene 的核心概念之一。
它是一种数据结构,用于从词项到文档的映射。
通常,我们将文本数据分割成单词,然后对每个词项构建一个索引条目,该条目指向包含该词项的文档。
例如,假设我们有三个文档:文档1 包含 "Lucene 是一个搜索引擎库",文档2 包含 "Apache Lucene 是一个全文搜索库",文档3 包含 "Lucene 是基于 Java 的"。
在倒排索引中,我们将按照词项构建索引,如下所示:词项文档Lucene 1, 2, 3是 1, 2, 3一个 1, 2, 3搜索引擎库 1全文搜索库 2基于 3Java 3倒排索引的优势在于它能够快速地确定包含特定词项的文档,并且支持更复杂的查询表达式。
2. 分词器分词器是将原始文本分割成词项的模块。
Lucene 提供了多种分词器,如标准分词器、简单分词器等。
分词器还可以根据具体的需求进行定制。
分词器在构建索引和搜索时起到关键作用,它们确保在索引和搜索阶段都使用相同的分词规则。
3. 文档和字段在 Lucene 中,文档是一个最小的索引单位。
它由多个字段组成,每个字段包含一个词项或多个词项。
字段可以是文本、数值或日期等不同类型。
Lucene 中的文档和字段的设计灵活,可以根据实际需求进行定义和修改。
lucene原理

lucene原理Lucene是Apache软件基金会下的一个开放源代码的全文信息检索的开发工具包,它实现了完整的文档搜索引擎。
它提供两种索引类型:结构化索引和文档索引,两种索引类型都有它们各自的优势和缺点,取决于实际需要。
Lucene提供了一个组件化的架构,它利用一个高效的索引系统来实现搜索。
此外,Lucene还提供了许多的文本处理功能,如词法分析,摘要,跟踪搜索日志,等等。
而且,Lucene和其他全文搜索系统不同,它允许用户定制自己的索引和结构,从而满足特定的搜索需求。
Lucene的核心是索引机制,它可以对一系列文档进行检索、搜索、高级搜索。
它利用微机二进制索引结构可以快速访问准确的结果,还可以在全文检索时进行模糊处理,识别文档中的同义词等。
Lucene还跟踪文档更新,可以检测何时需要重组全文索引,从而实现快速响应搜索需要。
除此之外,Lucene还可以搜索特定的文档,文本,页面,网页或者指定的网站。
Lucene的设计出发点是提供全文搜索的性能,而不仅仅是提供精确的搜索词语。
这意味着Lucene可以提供精确的搜索,使用的是数据结构和算法来实现搜索,搜索的结果可以按照权重排序,并且可以对搜索结果进行筛选,从而更好地满足搜索用户的需求。
Lucene通过提供文档过滤器和搜索过滤器,可以用来限定搜索结果的范围。
此外,Lucene 还提供了一系列的分析器,来处理原始的文档,包括不同类型的文件,如Word文档,PDF文档,HTML文档等等。
基于Lucene的搜索服务可以满足各种不同的搜索需求。
用户可以根据自己的关键字设置搜索条件,也可以应用不同类型的条件,如限制搜索结果的数量,搜索结果的排序等。
Lucene利用高效的计算方法和索引技术,能够提供快速准确的搜索结果,并对不同类型的数据进行处理,进一步提高搜索效率。
lucene面试题

lucene面试题一、Lucene简介Lucene是一个开源的全文检索引擎工具包,可以轻松地将其集成到应用程序中,以方便地实现全文检索功能。
它提供了强大且灵活的API接口,使用户可以对文档中的内容进行快速、高效的搜索和索引。
Lucene的核心是基于倒排索引原理,通过将文档中的单词映射到文档的地址来进行搜索,从而提高了搜索的速度和效率。
二、Lucene的特点和优势1. 高性能:Lucene使用高效的倒排索引和缓存机制,能够快速处理大量数据和复杂查询。
2. 可扩展性:Lucene提供了灵活的架构和API接口,可以根据需求进行扩展和定制。
3. 多语言支持:Lucene支持多种语言的分词器,可以处理各种类型的文档。
4. 高度可配置:Lucene的配置项丰富,可以根据需要进行灵活的配置和调优。
5. 支持多种数据格式:Lucene能够处理各种格式的数据,包括文本文件、HTML、XML、Word文档等。
三、Lucene的应用场景1. 搜索引擎:Lucene可以用于构建搜索引擎,实现快速、准确的搜索和检索功能。
2. 文本分析:Lucene提供了丰富的文本处理和分析功能,可以对文档进行分词、词性标注、去重等操作。
3. 数据挖掘:Lucene可以对大量数据进行索引和搜索,用于数据挖掘和信息提取。
4. 商业应用:Lucene可以用于构建企业内部搜索、电子文档管理系统、知识库等应用。
四、Lucene面试常见问题1. 什么是Lucene的倒排索引原理?2. 如何创建一个基本的Lucene索引?3. Lucene中的Query和Filter有什么区别?如何使用它们?4. 什么是Analyzer?有哪些常见的分词器?5. Lucene的排序原理是什么?如何进行排序?6. Lucene如何处理关键词的模糊匹配?7. Lucene的搜索结果评分算法是怎样的?8. 如何在Lucene中实现多字段的搜索?9. 如何优化Lucene的性能?10. Lucene与Elasticsearch有何区别?五、结语通过对Lucene的介绍和常见面试问题的概述,希望能够对读者了解Lucene的基本概念和使用方法有所帮助。
Lucene入门+实现

Lucene⼊门+实现Lucene简介详情见:()lucene实现原理其实⽹上很多资料表明了,lucene底层实现原理就是倒排索引(invertedindex)。
那么究竟什么是倒排索引呢?经过Lucene分词之后,它会维护⼀个类似于“词条--⽂档ID”的对应关系,当我们进⾏搜索某个词条的时候,就会得到相应的⽂档ID。
不同于传统的顺排索引根据⼀个词,知道有哪⼏篇⽂章有这个词。
图解:Lucene在搜索前⾃⾏⽣成倒排索引,相⽐数据库中like的模糊搜索效率更⾼!Lucene 核⼼API索引过程中的核⼼类1. Document⽂档:他是承载数据的实体(他可以集合信息域Field),是⼀个抽象的概念,⼀条记录经过索引之后,就是以⼀个Document的形式存储在索引⽂件中的。
2. Field:Field 索引中的每⼀个Document对象都包含⼀个或者多个不同的域(Field),域是由域名(name)和域值(value)对组成,每⼀个域都包含⼀段相应的数据信息。
3. IndexWriter:索引过程的核⼼组件。
这个类⽤于创建⼀个新的索引并且把⽂档加到已有的索引中去,也就是写⼊操作。
4. Directroy:是索引的存放位置,是个抽象类。
具体的⼦类提供特定的存储索引的地址。
(FSDirectory 将索引存放在指定的磁盘中,RAMDirectory ·将索引存放在内存中。
)5. Analyzer:分词器,在⽂本被索引之前,需要经过分词器处理,他负责从将被索引的⽂档中提取词汇单元,并剔除剩下的⽆⽤信息(停⽌词汇),分词器⼗分关键,因为不同的分词器,解析相同的⽂档结果会有很⼤的不同。
Analyzer是⼀个抽象类,是所有分词器的基类。
搜索过程中的核⼼类1. IndexSearcher :IndexSearcher 调⽤它的search⽅法,⽤于搜索IndexWriter 所创建的索引。
2. Term :Term 使⽤于搜索的⼀个基本单元。
lucense详解

另外,如果是在选择全文引擎,现在也许是试试Sphinx的时候了:相比Lucene速度更快,有中文分词的支持,而且内置了对简单的分布式检索的支持;基于Java的全文索引/检索引擎——LuceneLucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。
Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。
他贡献出的Lucene的目标是为各种中小型应用程序加入全文检索功能。
Lucene的发展历程:早先发布在作者自己的,后来发布在SourceForge,2001年年底成为APACHE基金会jakarta的一个子项目:/lucene/已经有很多Java项目都使用了Lucene作为其后台的全文索引引擎,比较著名的有:对于中文用户来说,最关心的问题是其是否支持中文的全文检索。
但通过后面对于Lucene 的结构的介绍,你会了解到由于Lucene良好架构设计,对中文的支持只需对其语言词法分析接口进行扩展就能实现对中文检索的支持。
全文检索≠ like "%keyword%"通常比较厚的书籍后面常常附关键词索引表(比如:北京:12, 34页,上海:3,77页……),它能够帮助读者比较快地找到相关内容的页码。
而数据库索引能够大大提高查询的速度原理也是一样,想像一下通过书后面的索引查找的速度要比一页一页地翻内容高多少倍……而索引之所以效率高,另外一个原因是它是排好序的。
对于检索系统来说核心是一个排序问题。
由于数据库索引不是为全文索引设计的,因此,使用like "%keyword%"时,数据库索引是不起作用的,在使用like查询时,搜索过程又变成类似于一页页翻书的遍历过程了,所以对于含有模糊查询的数据库服务来说,LIKE对性能的危害是极大的。
lucene简介原理及实践(共48张)

Analyzer
在一个文档被索引之前,首先需要对文档内容进行分词处理, 并且而剔除一些冗余的词句(例如:a,the,they等),这部分工作
就是由 Analyzer 来做的。
Analyzer 类是一个抽象类,它有多个实现。
BrazilianAnalyzer, ChineseAnalyzer, CJKAnalyzer, CzechAnalyzer, DutchAnalyzer, FrenchAnalyzer, GermanAnalyzer, GreekAnalyzer, KeywordAnalyzer, PatternAnalyzer, PerFieldAnalyzerWrapper, RussianAnalyzer, SimpleAnalyzer, SnowballAnalyzer, StandardAnalyzer, StopAnalyzer, ThaiAnalyzer, WhitespaceAnalyzer
通过实现特定API,完成文档建立索引的工 作
第7页,共48页。
Lucene搜索机制-B 基于(jīyú)索引搜索
Lucene通过特定的类,可以对索引进行操 作
通过特定的类,封装搜索结果,供应用程 序处理
第8页,共48页。
Lucene系统结构
第9页,共48页。
Lucene包结构(jiégòu)功能表
第19页,共48页。
Field
Field 对象(duìxiàng)是用来描述一个文档的某个属性的,比如一封电子邮件的标 题和内容可以用两个 Field 对象分别描述。
Field(String name, byte[] value, Field.Store store) Create a stored field with binary value.
es的lucene作用
es的lucene作用Es的Lucene作用Lucene是一个开源的全文搜索引擎库,被广泛应用于各种编程语言和领域,其中包括Elasticsearch(简称Es),是一个基于Lucene 构建的分布式搜索与分析引擎。
本文将重点介绍Es的Lucene作用,并探讨其在搜索引擎领域中的重要性。
一、Lucene的基本概念和原理Lucene是一个高效、可扩展的全文搜索引擎库,它提供了一套简单而强大的API,可以用于创建索引、搜索和生成文本摘要。
其核心原理是将文本数据分析、索引和搜索的过程进行分离,以实现高效的全文搜索。
1. 数据分析(Analysis):Lucene提供了一系列的文本分析器(Analyzer),用于将输入的文本进行分词、词干提取、大小写转换等处理。
分析器的作用是将原始文本转化为一组有意义的词条(Term),以便于后续的索引和搜索操作。
2. 索引(Indexing):Lucene使用倒排索引(Inverted Index)的方式来存储和管理文本数据。
倒排索引是一种将词条映射到文档的数据结构,它可以快速地根据词条进行搜索,并找到包含该词条的文档。
3. 搜索(Searching):Lucene提供了丰富的搜索API,可以根据关键词、短语、通配符等进行检索,并按照相关度对搜索结果进行排序。
搜索过程利用倒排索引来定位匹配的文档,并根据各种算法计算文档与查询的相关度。
二、Es中的Lucene应用Es是一个基于Lucene的分布式搜索与分析引擎,它在Lucene的基础上进行了功能扩展和性能优化,提供了更强大的分布式搜索和数据分析能力。
1. 分布式搜索:Es将数据分片存储在多个节点上,并使用分布式索引的方式来实现高性能的搜索。
当用户发起搜索请求时,Es会将查询分发到各个节点,并将结果进行合并和排序,最后返回给用户。
2. 数据分析与聚合:Es提供了丰富的数据聚合功能,可以对文档进行分组、统计、排序等操作。
用户可以通过聚合操作获取关于数据的各种统计信息,如平均值、最大值、最小值等,以及根据条件进行数据筛选和分析。
lucene对比中文近义词用法
标题:探讨Lucene对比中文近义词用法1. 简介为了更好地理解Lucene对比中文近义词用法,我们首先需要了解Lucene的基本概念和中文近义词的特点。
Lucene是一个全文检索引擎库,它提供了丰富的API,可以用于构建强大的全文搜索功能。
而中文近义词则是指在中文语境中,表达相似意义的词语,这些词语在不同的语境中可能会有微小的差别,但整体的意思是相通的。
2. Lucene的基本原理和功能Lucene通过倒排索引的方式来快速定位文档中的关键词,从而实现全文搜索的功能。
它采用了分词器来处理文本,将文本分割成若干个独立的单词,并将这些单词进行索引。
在搜索时,用户输入的查询语句也经过相同的分词处理,再与索引进行匹配,最终返回相关的文档。
3. 中文近义词的特点在中文语境中,由于词语的复杂性和多义性,往往会存在大量的近义词。
这些近义词可能在不同的场景中有不同的使用方式,但它们的基本意思是一致的。
“喜欢”和“爱好”就是一对中文近义词,它们都表示喜爱或偏好的意思,只是在语感上有细微的区别。
4. Lucene对比中文近义词用法在使用Lucene进行搜索时,对于中文近义词的处理往往是一个挑战。
由于中文的特殊性,同一个词可能存在多种不同的表达方式,而传统的搜索引擎很难将它们准确地匹配在一起。
针对这一问题,Lucene提供了同义词扩展的功能,可以将一些近义词视作同一个词来处理。
这样一来,用户在搜索时无需考虑到所有的近义词,只需要输入其中一个,就能够搜索到相关的文档。
5. 个人观点和总结通过对Lucene对比中文近义词用法的探讨,我们可以发现,Lucene在处理中文近义词时的确存在一些挑战,但它也提供了相应的解决方案。
在实际应用中,我们可以根据具体的需求,合理地进行同义词扩展,以提升搜索结果的准确性和覆盖范围。
对于中文近义词的掌握也需要结合具体的语境和语气来理解,不能简单地进行机械替换。
Lucene对比中文近义词用法的探讨,有助于我们更好地理解和应用这一强大的全文搜索引擎库。
lucene 原理
lucene 原理Lucene是一种开源的信息检索(IR)库,它提供了高效、可扩展的全文检索和索引功能。
下面是Lucene的一些详细原理解释:1. 倒排索引(Inverted Index):Lucene使用倒排索引的数据结构来实现全文检索。
传统的索引是从文档到词语的映射,而倒排索引则是从词语到文档的映射。
每个词语都对应一个或多个包含该词语的文档列表,方便快速地找到包含特定词语的文档。
2. 分词(Tokenization):在索引之前,Lucene会将文本分为一系列的词语或术语,这个过程称为分词。
分词的目的是将长文本拆分为可以被索引和搜索的离散单元。
Lucene提供多种分词器,以适应不同语言和需求。
3. 索引结构:Lucene使用多级索引结构以提高检索效率。
索引被划分为多个段(segments),每个段包含一个或多个文档。
每个段内部使用B树(B-tree)或前缀树(Trie)等数据结构来组织词项(term)和文档的映射关系。
4. 倒排列表(Inverted List):倒排列表是倒排索引的核心数据结构,用于存储每个词语在哪些文档中出现。
每个词语对应一个倒排列表,包含了所有出现该词语的文档ID及其相关的词频、位置和其他统计信息。
5. 相关性评分(Relevance Scoring):在执行搜索时,Lucene使用相关性评分算法来确定文档与查询的匹配程度。
默认的相关性评分算法是基于向量空间模型的TF-IDF(Term Frequency-Inverse Document Frequency),它考虑了词项在文档中出现的频率和在整个语料库中的重要性。
6. 查询解析和执行:Lucene使用查询解析器将用户的查询语句解析为内部查询对象。
查询对象由不同的查询类型(如词项查询、范围查询、布尔查询等)组成,并通过布尔运算来组合和匹配文档。
Lucene通过遍历倒排索引和倒排列表来执行查询,并根据相关性评分对文档进行排序。
lucene 底层原理
Lucene的底层原理主要包括索引原理和搜索原理。
首先,Lucene的索引原理是建立在对文本内容进行深入理解的基础上的。
它将文本内容进行分词处理,形成一个个独立的词语或短语,然后对这些词语或短语进行索引。
这个过程主要涉及到两个步骤:一是对文本内容的分词处理,即将文本分成一个个有意义的词语或短语;二是对这些词语或短语进行索引,即建立它们与对应文本的映射关系。
这种映射关系可以通过一种称为“倒排索引”的技术来实现,它通过将文本中的词语映射到包含该词语的文档,从而实现快速检索。
其次,Lucene的搜索原理是基于其索引原理的。
当用户进行搜索时,Lucene会根据用户输入的关键词,在倒排索引中找到对应的文档。
这个过程涉及到对关键词的分析和处理,以及根据一定的算法对搜索结果进行排序。
排序的依据可以根据需要进行设置,比如相关性、时间、重要程度等。
此外,Lucene还提供了丰富的功能和接口,方便用户进行自定义配置和扩展。
比如,用户可以根据需要对索引的建立方式、分词算法、排序规则等进行调整,以达到更好的搜索效果。
同时,Lucene
还支持多语言、多平台的应用,可以广泛应用于各种场景中。
总之,Lucene的底层原理主要包括索引原理和搜索原理,通过深入理解文本内容,建立倒排索引,实现对文本的高效检索。
同时,Lucene还提供了丰富的功能和接口,方便用户进行自定义配置和扩展。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Powered By Lucene
/jakarta-lucene/PoweredBy
Part Three:Lucene In Action! Three: Action!
几个重要概念
analyzer Analyzer是分析器,它的作用是把一个字符串按某种规则划 分成一个个词语,并去除其中的无效词语。 document 用户提供的源是一条条记录,它们可以是文本文件、字符串 或者数据库表的一条记录等等。一条记录经过索引之后,就是以一个 Document的形式存储在索引文件中的。用户进行搜索,也是以 Document列表的形式返回。 field 一个Document可以包含多个信息域,例如一篇文章可以包含 “标题”、“正文” 等信息域,这些信息域就是通过Field在 Document中存储的。 Field有两个属性可选:存储和索引。通过存储属性你可以 控制是否对这个Field进行存储;通过索引属性你可以控制是否对该 Field进行索引。
并发访问
本质
输入:若干 字符串
提供:全文 搜索服务
输出:搜索 的关键词在 哪
来一点想象:
站内新闻索引,建立资料库 高效的对一个数据库进行全文检索 利用其扩展接口,做自己的搜索引擎 ……
Performance
250万记录,300M左右文本,生成索引380M左 右,800线程下平均处理时间300ms。 37000记录,索引数据库中的两个varchar字段, 索引文件2.6M,800线程下平均处理时间1.5ms。
Core的组成 Core的组成
search Search包含了从索引中搜索结果的各种类,例如刚才说的各 种Query类,包括TermQuery、BooleanQuery等就在这个包里。 store Store包含了索引的存储类,例如Directory定义了索引文件 的存储结构,FSDirectory为存储在文件中的索引,RAMDirectory为 存储在内存中的索引,MmapDirectory为使用内存映射的索引。 util Util包含一些公共工具类,例如时间和字符串之间的转换工 具。
SandBox中提供的Analyzer
◦ ChineseAnalyzer ◦ CJKAnalyzer
/java/2_3_2/lucene-sandbox/index.html
中科院ICTCLAS
◦
imdict-chinese-analyzer是 imdict智能词典的智能中文分词模 块,作者高小平,算法基于隐马尔科夫模型(Hidden Markov Model, HMM),是中国科学院计算技术研究所的ictclas中文分词程序的重 新实现(基于Java),可以直接为lucene搜索引擎提供中文分词支 持。
Core的组成 Core的组成
对于外部应用来说, 索引模块(index)、检索 模块(search)是主要的 外部应用入口
Core的组成 Core的组成
analysis Analysis包含一些内建的分析器,例如按空白字符分词的 WhitespaceAnalyzer,添加了stopwrod过滤的StopAnalyzer,最常用 的是StandardAnalyzer。 document Document包含文档的数据结构,例如Document类定义了存储 文档的数据结构,Field类定义了Document的一个域。 index Index包含了索引的读写类,例如对索引文件的segment进行 写、合并、优化的IndexWriter类和对索引进行读取和删除操作的 IndexReader类。 queryParser QueryParser包含了解析查询语句的类。Lucene有很多种 Query类,它们都继承自Query,执行各种特殊的查询,QueryParser 的作用就是解析查询语句,按顺序调用各种 Query类查找出结果。
Lucene
Nutch
网络爬虫 和Web相 关的一些
Part Two:Lucene能做什么 Two:Lucene能做什么
Lucene的创新 Lucene的创新
Lucene 其他开源全文检索系统 可以进行增量的索引(Append),可以 很多系统只支持批量的索引, 增量索引和批 对于大量数据进行批量索引,并且接 有时数据源有一点增加也需要 口设计用于优化批量索引和小批量的 量索引 重建索引。 增量索引。 Lucene没有定义具体的数据源,而是 一个文档的结构,因此可以非常灵活 很多系统只针对网页,缺乏其 数据源 的适应各种应用(只要前端有合适的 他格式文档的灵活性。 转换器把数据源转换成相应结构), Lucene的文档是由多个字段组成的, 甚至可以控制那些字段需要进行索引, 那些字段不需要索引,近一步索引的 字段也分为需要分词和不需要分词的 缺乏通用性,往往将文档整个 索引内容抓取 类型: 索引了 需要进行分词的索引,比如:标题, 文章内容字段 不需要进行分词的索引,比如:作 者/日期字段
演示
More…
定制优化自己的Analyzer 处理多种文档格式(PDF、doc、html etc.) Lucene Port:Perl,Python,C++,.Net…etc. SandBox ……
Thank you!
Q&A
Reference
[1]征服Ajax+Lucene构建搜索引擎 作者: 李刚 出版社: 人民邮电出 版社 [2]Lucene漫谈—入门与介绍 /blog/186861 [3] Lucene:基于Java的全文检索引擎简介 作者:车东 /tech/lucene.html [4]Lucene in action 作者: Otis Gospodnetic,Erik Hatcher
简单实践1--建立索引 简单实践1--建立索引
建立索引的最简单的代码
简单实践2--尝试搜索 简单实践2--尝试搜索
尝试搜索的最简单的代码
简单实践3--Hack 简单实践3--Hack The Analyzer
内置的StandardAnalyzer对于中英文字符流的实际处理测试
简单实践4--中文分词改进 简单实践4--中文分词改进
◦ /
Part Four:一个简单的搜索引擎 Four:一个简单的搜索引擎
Really Simple
三个文件:
◦ Constants.java—用静态变量来存放路径 ◦ LuceneIndex.java—用来建立索引 ◦ LuceneSearch.java—用来进行搜索
工作方式
源字符串 经过analyzer处 理 将信息写入 Document的各 Field
经过analyzer处 理
提供搜索关键 词
建立索引并存 储
搜索索引找出 Document
从Document提 取所需Field
Lucene的结构 Lucene的结构
Lucene:
Core--core是lucene稳定的核心部分 Sandbox--sandbox包含了一些附加功能,例 如各种分析器。
History
贡献者:
Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜 索引擎(Apple的Copland操作系统的成就之一)的主要开发者。作为 Lucene和Nutch两大Apach Open Source Project的始创人(其实还有 Lucy, Lucene4C 和Hadoop等相关子项目),Doug Cutting 一直为搜 索引擎的开发人员所关注。他终于在为Yahoo以Contractor的身份工 作4年后,于06年正式以Employee的身份加入Yahoo。他贡献出的 Lucene的目标是为各种中小型应用程序加入全文检索功能。
几个重要概念
term term是搜索的最小单位,它表示文档的一个词语,term由两 部分组成:它表示的词语和这个词语所出现的field。 tocken tocken是term的一次出现,它包含trem文本和相应的起止偏 移,以及一个类型字符串。一句话中可以出现多次相同的词语,它们 都用同一个term表示,但是用不同的tocken,每个tocken标记该词语 出现的地方。 segment 添加索引时并不是每个document都马上添加到同一个索引文 件,它们首先被写入到不同的小文件,然后再合并成一个大索引文件, 这里每个小文件都是一个segment。
Keywords
Lucene: 1、搜索引擎 2、全文信息检索 3、非完整应用 4、工具包 5、基于Java 6、开源项目
Summary
Apache Lucene是一个基于Java全文搜索引擎, 利用它可以轻易地为Java软件加入全文搜寻功能。 Lucene不是一个完整的搜索应用程序,而是一个 基于 Java 的全文信息检索工具包,为你的应用程 序提供索引和搜索功能,可以方便的嵌入到各种应 用中实现针对应用的全文索引/检索功能。 Lucene 目前是 Apache Jakarta 家族中的一个 开源项目。也是目前最为流行的基于 Java 开源全 文检索工具包。
发展历程:
最先发布在作者自己的,后来发布在Source Forge,2001年年底成为APACHE基金会jakarta的一个子项目: /lucene/
Tip:
Lucene VS Nutch
Lucene是一个提供全文文本搜索的函数库,它不是一个应用软件。 它提供很多API函数让你可以运用到各种实际应用程序中。 Nutch是一个建立在Lucene核心之上的Web搜索的实现,它是一个真正 的应用程序。
Lucene漫谈 Lucene漫谈
--入门及介绍
ZekChang Twitter:@ZekChang Twitter:@ZekChang Mail:zekchang@
Outline
Lucene是什么? Lucene能做什么? Lucene怎样做到这些? 一个非常简单的搜索引擎
Part One:什么是Lucene One:什么是L的创新