你的位置:首页 > 软件开发 > Java > Lucene的分析资料【转】

Lucene的分析资料【转】

发布时间:2016-08-26 12:00:11
Lucene 源码剖析1 目录2 Lucene是什么2.1.1 强大特性2.1.2 API组成-2.1.3 Hello World!2.1.4 Lucene roadmap3 索引文件结构3.1 索引数据术语和约定 -3.1.1 术语定义3.1.2 倒排索引(inverted i ...

Lucene的分析资料【转】

 

Lucene 源码剖析

1 目录

2 Lucene是什么

2.1.1 强大特性

2.1.2 API组成-

2.1.3 Hello World!

2.1.4 Lucene roadmap

3 索引文件结构

3.1 索引数据术语和约定 -

3.1.1 术语定义

3.1.2 倒排索引(inverted indexing)

3.1.3 Fields的种类

3.1.4 片断(segments)

3.1.5 文档编号(document numbers)

3.1.6 索引结构概述

3.1.7 索引文件中定义的数据类型 -

3.2 索引文件结构

3.2.1 索引文件概述

3.2.2 每个Index包含的文件

3.2.2.1 Segments文件

3.2.2.2 Lock文件

3.2.2.3 Deletable文件

3.2.2.4 Compound文件(.cfs)

3.2.3 每个Segment包含的文件

3.2.3.1 Field信息(.fnm)

3.2.3.2 Field数据(.fdx和.fdt)

3.2.3.3 Term字典(.tii和.tis)

3.2.3.4 Term频率数据(.frq)

3.2.3.5 Positions位置信息数据(.prx)

3.2.3.6 Norms调节因子文件(.nrm)-

3.2.3.7 Term向量文件  -

3.2.3.8 删除的文档 (.del)

3.3 局限性(Limitations)

4 索引是如何创建的

4.1 索引创建示例

4.2 索引创建类IndexWriter

4.2.1 org.apache.lucene.index.IndexWriter

4.2.2 org.apache.lucene.index.DocumentsWriter

4.2.3 org.apache.lucene.index.SegmentMerger -

5 数据是如何存储的

5.1 数据存储类Directory

5.1.1 org.apache.lucene.store.Directory

5.1.2 org.apache.lucene.store.FSDirectory

5.1.3 org.apache.lucene.store.RAMDirectory

5.1.4 org.apache.lucene.store.IndexInput

5.1.5 org.apache.lucene.store.IndexOutput

6 文档内容是如何分析的

6.1 文档分析类Analyzer

6.1.1 org.apache.lucene.store.Analyzer

6.1.2 org.apache.lucene.store.StandardAnalyzer -

7 如何给文档评分

7.1 文档评分类Similarity

7.1.1 org.apache.lucene.search.Similarity

7.2 Similarity评分公式

1Lucene是什么

Apache Lucene是一个高性能(high-performance)的全能的全文检索(full-featured text search engine)的搜索引擎框架库,完全(entirely)使用Java开发。它是一种技术(technology),适合于(suitable for)几乎(nearly)任何一种需要全文检索(full-text search)的应用,特别是跨平台(cross-platform)的应用。

Lucene的分析资料【转】

Lucene 通过一些简单的接口(simple API)提供了强大的特征(powerful features):

可扩展的高性能的索引能力(Scalable, High-Performance Indexing

ü 超过20M/分钟的处理能力(Pentium M 1.5GHz)

ü 很少的RAM内存需求,只需要1MB heap

ü 增量索引(incremental indexing)的速度与批量索引(batch indexing)的速度一样快

ü 索引的大小粗略(roughly)为被索引的文本大小的20-30%

强大的精确的高效率的检索算法(Powerful, Accurate and Efficient Search Algorithms

ü 分级检索(ranked searching)能力,最好的结果优先推出在前面

ü 很多强大的query种类:phrase queries, wildcard queries, proximity queries, range queries等

ü 支持域检索(fielded searching),如标题、作者、正文等

ü 支持日期范围检索(date-range searching)

ü 可以按任意域排序(sorting by any field)

ü 支持多个索引的检索(multiple-index searching)并合并结果集(merged results)

ü 允许更新和检索(update and searching)并发进行(simultaneous)

跨平台解决方案(Cross-Platform Solution

ü 以Open Source方式提供并遵循Apache License,允许你可以在即包括商业应用也包括Open Source程序中使用Lucene

ü 100%-pure Java(纯Java实现)

ü 提供其他开发语言的实现版本并且它们的索引文件是兼容的

Lucene API被分成(divide into)如下几种包(package)

· org.apache.lucene.analysis

定义了一个抽象的Analyser API,用于将text文本从一个java.io.Reader转换成一个TokenStream,即包括一些Tokens的枚举容器(enumeration)。一个TokenStream的组成(compose)是通过在一个Tokenizer的输出的结果上再应用TokenFilters生成的。一些少量的Analysers实现已经提供,包括StopAnalyzer和基于语法(gramar-based)分析的StandardAnalyzer。

· org.apache.lucene.document

提供一个简单的Document类,一个document只不过包括一系列的命名了(named)的Fields(域),它们的内容可以是文本(strings)也可以是一个java.io.Reader的实例。

· org.apache.lucene.index

提供两个主要类,一个是IndexWriter用于创建索引并添加文档(document),另一个是IndexReader用于访问索引中的数据。

· org.apache.lucene.search

提供数据结构(data structures)来呈现(represent)查询(queries):TermQuery用于单个的词(individual words),PhraseQuery用于短语,BooleanQuery用于通过boolean关系组合(combinations)在一起的queries。而抽象的Searcher用于转变queries为命中的结果(hits)。IndexSearcher实现了在一个单独(single)的IndexReader上检索。

· org.apache.lucene.queryParser

使用JavaCC实现一个QueryParser。

· org.apache.lucene.store

定义了一个抽象的类用于存储呈现的数据(storing persistent data),即Directory(目录),一个收集器(collection)包含了一些命名了的文件(named files),它们通过一个IndexOutput来写入,以及一个IndexInput来读取。提供了两个实现,FSDirectory使用一个文件系统目录来存储文件,而另一个RAMDirectory则实现了将文件当作驻留内存的数据结构(memory-resident data structures)。

· org.apache.lucene.util

包含了一小部分有用(handy)的数据结构,如BitVector和PriorityQueue等。

2Hello World!

下面是一段简单的代码展示如何使用Lucene来进行索引和检索(使用JUnit来检查结果是否是我们预期的):

1Lucene的分析资料【转】 // Store the index in memory:

原标题:Lucene的分析资料【转】

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录