`
travels_with_you
  • 浏览: 21321 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

apache lucene 的核心类

阅读更多

下边介绍一下lucene的核心类:(参考lucene in action)
主要有两部分组成,核心索引类和核心搜索类,顾名思意,就是用来建立索引和用来搜索的类。

IndexWriter:可以对索引进行写操作,但不能读取或者搜索。是唯一能写索引的类。

Directory:Directory类代表一个Lucene索引的位置。它是一个抽象类,允许它的子类(其中的两个包含在Lucene中)在合适时存储索引。在我们的Indexer示例中,我们使用一个实际文件系统目录的路径传递给IndexWriter的构造函数来获得Directory的一个实例。IndexWriter然后使用Directory的一个具体实现FSDirectory,并在文件系统的一个目录中创建索引。在你的应用程序中,你可能较喜欢将Lucene索引存储在磁盘上。这时可以使用FSDirectory,一个包含文件系统真实文件列表的Driectory子类,如同我们在Indexer中一样。另一个Directory的具体子类是RAMDirectory。尽管它提供了与FSDirectory相同的接口,RAMDirectory将它的所有数据加载到内存中。所以这个实现对较小索引很有用处,可以全部加载到内存中并在程序关闭时销毁。因为所有数据加载到快速存取的内存中而不是在慢速的硬盘上,RAMDirectory适合于你需要快速访问索引的情况,不管是索引或搜索。做为实例,Lucene的开发者在所有他们的单元测试中做了扩展使用:当测试运行时,快速的内存驻留索引被创建搜索,当测试结束时,索引自动销毁,不会在磁盘上留下任何残余。当然,在将文件缓存到内存的操作系统中使用时RAMDirectory和FSDirectory之间的性能差别较小

Analyzer:分析文本内容,提取关键字

Document:一个Document代表字段的集合。你可以把它想象为以后可获取的虚拟文档—一块数据,如一个网页、一个邮件消息或一个文本文件。一个文档的字段代表这个文档或与这个文档相关的元数据

Field:在索引中的每个Document含有一个或多个字段,具体化为Field类。每个字段相应于数据的一个片段,将在搜索时查询或从索引中重新获取。
Lucene提供四个不同的字段类型,你可以从中做出选择:

Keyword—不被分析,但是被索引并逐字存储到索引中。这个类型适合于原始值需要保持原样的字段,如URL、文件系统路径、日期、个人名称、社会安全号码、电话号码等等。例如,我们在Indexer(列表1.1)中把文件系统路径作为Keyword字段。

UnIndexed—不被分析也不被索引,但是它的值存储到索引中。这个类型适合于你需要和搜索结果一起显示的字段(如URL或数据库主键),但是你从不直接搜索它的值。因为这种类型字段的原始值存储在索引中,这种类型不适合于存放比较巨大的值,如果索引大小是个问题的话。

UnStored—和UnIndexed相反。这个字段类型被分析并索引但是不存储在索引中。它适合于索引大量的文本而不需要以原始形式重新获得它。例如网页的主体或任休其它类型的文本文档。

Text—被分析并索引。这就意味着这种类型的字段可以被搜索,但是要小心字段大小。如果要索引的数据是一个String,它也被存储;但如果数据(如我们的Indexer例子)是来自一个Reader,它就不会被存储。这通常是混乱的来源,所以在使用Field.Text时要注意这个区别。
所有字段由名称和值组成。你要使用哪种字段类型取决于你要如何使用这个字段和它的值。严格来说,Lucene只有一个字段类型:以各自特征来区分的字段。有些是被分析的,有些不是;有些是被索引,然面有些被逐字地存储等等。
注意 注意Field.Text(String, String)和Field.Text(String, Reader)之间的区别。String变量存储字段数据,而Reader变量不存储。为索引一个String而又不想存储它,可以用Field.UnStored(String, String)

下边是核心搜索类:
IndexSearcher:IndexSearcher用来搜索而IndexWriter用来索引:暴露几个搜索方法的索引的主要链接。你可以把IndexSearcher想象为以只读方式打开索引的一个类。它提供几个搜索方法,其中一些在抽象基类Searcher中实现;最简单的接受单个Query对象做为参数并返回一个Hits对象。这个方法的典型应用类似这样:
IndexSearcher is = new IndexSearcher(
FSDirectory.getDirectory(“/tmp/index”, false));
Query q = new TermQuery(new Term(“contents”, “lucene”));
Hits hits = is.search(q);
Term:
Term是搜索的基本单元。与Field对象类似,它由一对字符串元素组成:字段的名称和字段的值。注意Term对象也和索引过程有关。但是它们是由Lucene内部生成,所以在索引时你
一般不必考虑它们。在搜索时,你可能创建Term对象并TermQuery同时使用。
Query q = new TermQuery(new Term(“contents”, “lucene”));
Hits hits = is.search(q);
这段代码使Lucene找出在contents字段中含有单词lucene的所有文档。因为TermQuery对象继承自它的抽象父类Query,你可以在等式的左边用Query类型。

Query
Lucene中包含一些Query的具体子类。到目前为止,在本章中我们仅提到过最基本的Lucene Query:TermQuery。其它Query类型有BooleanQuery,PhraseQuery, PrefixQuery, PhrasePrefixQuery, RangeQuery, FilteredQuery和SpanQuery

TermQuery
TermQuery是Lucene支持的最基本的查询类型,并且它也是最原始的查询类型之一。它用来匹配含有指定值的字段的文档.

Hits类是一个搜索结果(匹配给定查询的文档)文档队列指针的简单容器。基于性能考虑,Hits的实例并不从索引中加载所有匹配查询的所有文档,而是每次一小部分。
分享到:
评论

相关推荐

    apache下的lucene教程

    #### 二、Lucene核心概念与架构 - **索引(Index)**:索引是Lucene中最核心的概念之一,它是由一系列文档构成的数据结构集合,用于快速检索。 - **文档(Document)**:文档是索引的基本单位,每个文档包含一组字段。 -...

    Apache Lucene-4.10.3源码

    Apache Lucene是一个开源的全文搜索引擎库,...以上是对Apache Lucene 4.10.3版本的一些核心知识点的介绍。这个版本不仅提供了强大的搜索能力,还支持信息检索的各种复杂需求,是开发人员构建高效搜索功能的首选工具。

    cpp-Rucene是ApacheLucene项目的一个Rust移植

    Rucene的核心设计目标是保持与Apache Lucene的兼容性,以便开发者能够轻松地在Rust和Java之间迁移。它实现了相似的API和数据结构,使得熟悉Lucene的开发人员能够迅速上手。Rucene提供了诸如分词、索引创建、查询解析...

    lucene3.0核心jar包

    Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发并维护。它提供了高级的文本分析、索引和搜索功能,被广泛应用于各种信息检索系统中。这里的"lucene3.0核心jar包"是 Lucene 的一个重要版本,发布于2009年...

    lucene包,lucene实现核心代码

    在"lucene包"中,我们可以找到Lucene的核心组件和类,这些类负责索引和搜索文档。以下是Lucene实现的核心知识点: 1. **索引过程**: - `IndexWriter`:这是创建和更新Lucene索引的主要类。通过这个类,你可以将...

    Apache Lucene3.0 入门实例介绍

    Lucene的核心组件包括文档(Document)、字段(Field)、索引(Index)和搜索(Search)。一个文档由多个字段组成,每个字段包含文本和相应的属性(如是否可搜索、是否可存储等)。索引是这些文档经过分析和处理后...

    lucene核心资源包以及lucene的api

    **Lucene核心资源包与API详解** Lucene是一款开源全文搜索引擎库,由Apache软件基金会开发并维护。它为Java开发者提供了强大的文本搜索功能,被广泛应用于各种信息检索系统。本资源包包含了Lucene的核心资源及API,...

    Lucene 5 主要jar包

    1. **lucene-core-5.0.0.jar**:这是Lucene的核心组件,包含了索引和搜索的基本功能。它包括文档的创建、索引、查询以及结果的排序和过滤。这个jar包提供了如Analyzer、IndexWriter、Directory、QueryParser等关键类...

    lucene基本包

    这个“lucene基本包”包含了Lucene的核心组件,是理解和使用Lucene进行信息检索的基础。 1. **全文检索引擎架构** Lucene的核心理念是建立索引,以便快速查找文档中的信息。它通过将文本数据转换成便于搜索的结构...

    lucene 最新版本所有jar包

    在本压缩包中,包含了Lucene的最新版本——4.10.2的所有相关jar包,总计59个,这些jar包构成了Lucene的核心组件以及各种扩展模块。 首先,我们来看看核心组件`lucene-core-4.10.2.jar`。这个包是Lucene的基础,包含...

    Apache-Lucene.Net-3.0.3-RC2.bin

    这个"Apache-Lucene.Net-3.0.3-RC2.bin"压缩包包含了Lucene.Net 3.0.3 RC2版本的所有核心组件和相关文档,为.NET开发者提供了强大的全文检索功能。 在压缩包内,各文件的作用如下: 1. **CHANGES.txt**:这是版本...

    lucene-core-2.9.2.jar

    1. 模型与数据结构:Lucene的核心库主要包含以下组件:索引(Index)、文档(Document)、字段(Field)和分词器(Tokenizer)。索引是Lucene处理数据的主要方式,它将文本数据转化为便于搜索的结构。文档是信息的...

    中英文版 lucene in action (pdf 版,附随书源码)

    2. **Lucene API**:详细介绍了如何使用Lucene的API来构建索引和执行查询,包括Document、Field、Analyzer、IndexWriter和IndexReader等类的使用。 3. **文本分析**:讲解了如何定制Analyzer进行分词、去除停用词、...

    lucene-core-4.9.3,开源jar包

    “lucene-core-4.9.3.jar”作为Apache Lucene的核心组件,是实现高效全文搜索的关键。了解并熟练掌握其原理和用法,对于开发具有强大搜索功能的应用程序至关重要。无论你是Java开发者还是对全文检索感兴趣的学者,...

    lucene-7.3.0

    - **安装**:首先,需要下载并解压Apache Lucene 7.3.0的压缩包,包含的jar文件是运行库的核心组件。 - **创建索引**:通过IndexWriter类,可以将文档数据转换成索引,索引过程包括分词、编码等步骤。 - **执行...

    lucene-core-2.9.4,lucene-core-3.0.2,lucene-core-3.0.3,lucene-core-3.4.0

    《Apache Lucene核心技术详解:从2.9.4到3.4.0的演变》 Apache Lucene,作为开源的全文检索库,是Java开发人员进行高效信息检索的重要工具。这个压缩包文件包含了Lucene从2.9.4版本到3.4.0版本的核心组件,让我们...

    Lucene的系统结构

    【Lucene的系统结构】 Apache Lucene 是一个高性能、全文本搜索引擎库,广泛应用...理解和掌握这些核心组件对于开发和优化基于Lucene的搜索引擎至关重要。通过扩展和定制这些组件,开发者可以适应各种特定的搜索需求。

    Lucene组件

    Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护。它为Java开发者提供了强大的文本搜索功能,同时也被广泛应用于其他编程语言,如.NET平台的Lucene.Net。Lucene的核心特性包括分词、索引、查询解析、...

    官方最新完整版lucene-6.6.0.zip

    《Apache Lucene 6.6.0:全文检索与索引库详解》 Apache Lucene 是一个开源的全文检索库,由Java编写,为开发者提供了强大的文本搜索功能。6.6.0 版本作为官方的最新完整版,集成了众多优化和改进,旨在提供更加...

    lucene-core-2.9.4.jar.zip

    《Lucene核心库2.9.4版本解析与应用》 在信息检索和文本处理领域,Apache Lucene是一个广泛使用的开源全文搜索引擎库。标题中的"lucene-core-2.9.4.jar.zip"是一个包含Lucene核心库2.9.4版本的压缩文件,它在Java...

Global site tag (gtag.js) - Google Analytics