`

Lucene源码解析--Field类

    博客分类:
  • java
 
阅读更多

转载http://blog.itpub.net/28624388/viewspace-766381/

Field类:文档中的一个域,在事实上控制着被索引的域值。其组成部分包括type(域的类型),name(域的名称),fieldsData(域的值),boost(加强因子).

 

 

 

一:域的类型FieldType描述Field的相关属性。

1.private boolean indexed; 对field是否进行索引操作.

2.private boolean tokenized;是否使用分析器将域值分解成独立的语汇单元流。该属性仅当indexed()为ture时有效.

3.private boolean stored;是否存储field的值。如果true,原始的字符串值全部被保存在索引中,并可以由IndexReader类恢复。该选项对于需要展示搜索结果的一些域很有用(如URL,标题等)。如果为false,则索引中不存储field的值,通常用来索引大的文本域值。如Web页面的正文。

4.private boolean storeTermVectors;当lucene建立起倒排索引后,默认情况下它会保存所有必要的信息实施Vector Space Model。该Model需要计算文档中出现的term数,以及他们出现的位置。该属性仅当indexed为true时生效。他会为field建立一个小型的倒排索引。

5.private boolean storeTermVectorOffsets;表示是否存储field的token character的偏移量到 term vectors向量中。

6.private boolean storeTermVectorPositions;表示是否存储field中token的位置到term vectors 向量中。

7.private boolean storeTermVectorPayloads;是否存储field中token的比重到term vectors中。

8.private boolean omitNorms;是否要忽略field的加权基准值,如果为true可以节省内存消耗,但在打分质量方面会有更高的消耗,另外你也不能使用index-time  进行加权操作。

9.private IndexOptions indexOptions;描述什么可以被记录到倒排索引当中。
DOCS_ONLY:仅documents被索引,term的频率和位置都将被忽略。针对field的短语或有关位置的查询都将抛出异常。
DOCS_AND_FREQS:documents和term的频率被索引,term的位置被忽略。这样可以正常打分,但针对field的短语或有关位置的查询都将抛出异常。
DOCS_AND_FREQS_AND_POSITIONS:这是一个全文检索的默认设置,打分和位置检索都支持。
DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS:索引字符相对位置的偏移量。

10.private DocValuesType docValueType;DocValues  的类型,如果非空,field的值将被索引成docValues.
NUMERIC:数字类型
BINARY:二进制类型
SORTED:只保存不同的二进制值 byte[]
SORTED_SET.

11.private boolean frozen; 阻止field属性未来可能的变更,该属性通常在FieldType   属性已经被设置后调用。是为了防止无意识的变更。

二:Field类的构造函数

1.rotected Field(String name, FieldType type)创建一个无初始值的field.

2.  public Field(String name, Reader reader, FieldType type)
使用Reader而不是String对象来表示域值。在这种情况下,域值是不能被存储的,并且该域会一直用于分析和索引。请参照TextField

3.public Field(String name, TokenStream tokenStream, FieldType type)使用TokenStream而不是String对象来表示域值。在这种情况下,域值是不能被存储的,并且该域会一直用于分析和索引。请参照TextField

4. public Field(String name, byte[] value, FieldType type)用二进制来表示域值,不能被索引。

三:Field子类介绍(部分)
1.StringField:整个string作为一个单独的分词token.

2.TextField:A field that is indexed and tokenized, without term
  vectors.  For example this would be used on a 'body'  field, that contains the bulk of a document's text.

3.IntField:索引int值得域,用来进行范围过滤和排序(使用NumericRangeQuery,NumericRangeFilter,SortField.Type#INT)

4.StoredField:域值存储到索引,以便查询的时候进行展示。

5.NumericDocValuesField:每个文档存储一个long值,用于排序或值检索。

  • 大小: 205.9 KB
分享到:
评论

相关推荐

    lucene源码---官网最新下载

    - **QueryParser**: 解析用户输入的查询字符串,将其转换为 Lucene 查询对象。 2. **索引过程** - **Document**: 文档是 Lucene 中的基本数据单元,包含了待搜索的信息。开发者可以添加 Field 对象到 Document 中...

    一步一步跟我学习Lucene源码之lucene的各种Field

    Lucene的核心功能包括文档的索引、查询解析、排序以及结果的评分。 Field是Lucene中非常关键的概念,它是构成文档的基本单元。一个文档可以包含多个Field,每个Field都有特定的名称和值,用于表示文档的不同部分。...

    lucene-2.9.4-src.zip

    三、源码解析 在“lucene-2.9.4-src.zip”中,我们可以看到Lucene的源代码组织结构,包括核心库、模块化组件以及相关的测试用例。主要模块有: 1. core模块:包含了Lucene的核心类和接口,如IndexWriter、...

    lucene-2.9.3-src.zip

    《Apache Lucene 2.9.3 源码解析》 Apache Lucene 是一个开源全文搜索引擎库,它为开发者提供了强大的文本搜索功能。这里我们关注的是Lucene 2.9.3版本的源代码,这个版本在当时是相当流行且稳定的。"lucene-2.9.3-...

    lucene-5.2.1-src.tgz

    《Apache Lucene 5.2.1 源码解析》 Apache Lucene 是一个开源全文搜索引擎库,它为开发者提供了构建高级搜索功能所需的核心工具。在这个特定的版本——lucene-5.2.1 中,我们可以深入研究其源代码,理解这个强大的...

    lucene-3.3.0-src.zip

    《Apache Lucene 3.3.0 源码解析》 Apache Lucene 是一个开源全文搜索引擎库,它为开发者提供了强大的文本搜索功能。这里我们关注的是它的3.3.0版本的源代码,文件名为“lucene-3.3.0-src.zip”。这个版本在2011年...

    java全文搜索lucene-3.0.0-src+lib.zip

    三、Lucene源码分析 3.1 源码结构 Lucene 3.0.0源码包含了多个模块,如core、analysis、queryparser、demo等,分别对应不同的功能模块。开发者可以通过阅读源码了解其内部实现原理,以便更好地进行二次开发和优化。...

    lucene-core-2.4.0的源码

    Lucene 2.4.0的源码提供了丰富的API接口,开发者可以基于这些接口实现自己的分析器、过滤器、查询解析器等,以适应不同的应用场景。 总之,通过深入学习Lucene 2.4.0的源码,我们可以了解到搜索引擎背后的基本原理...

    lucene-3.0.2-dev-src

    在`lucene-3.0.2-dev`源码中,`IndexWriter`类负责创建和更新索引,通过`Term`和`Document`对象来表示关键词和文档。索引的构建过程包括分词(Tokenization)、词项分析(Tokenization)和文档编码(Document ...

    lucene-2.9.0-src.tar.gz

    三、源码解析 3.1 索引构建 索引构建流程始于IndexWriter,它负责读取文档、分词、建立倒排索引,并将其保存到磁盘。关键类包括Field、Document和TermInfo,它们分别代表字段、文档和词项信息。 3.2 查询执行 搜索...

    lucene-3.0.0-src.zip

    《Apache Lucene 3.0.0 源码解析》 Apache Lucene 是一个开源全文搜索引擎库,它为开发者提供了强大的文本搜索功能。在这个版本3.0.0的源码中,我们可以深入理解Lucene的核心机制和设计原理,这对于开发、优化以及...

    Lucene---全文检索(文档pdf/txt/office/html)

    - **PDF**: 通过 Apache Tika 或 PDFBox 库,Lucene 可以解析 PDF 文件内容并建立索引。 - **TXT**: 对纯文本文件,Lucene 直接读取内容进行索引。 - **Office 文件**: 包括 Word、Excel 和 PowerPoint,通常借助于 ...

    lucene-2.3.2-src

    - `org.apache.lucene.document`:定义了Document和Field的类,以及相关辅助类。 - `org.apache.lucene.queryparser`:包含了查询解析器的实现,如ClassicQueryParser、MultiFieldQueryParser等。 4. Lucene ...

    lucene-3.0.3-src.zip

    三、源码解析 1. **索引过程**:从Analyzer开始,源码展示了如何通过分词、标准化和过滤等步骤将文本转化为可索引的词项。接着,IndexWriter将这些词项与对应的文档关联,形成倒排索引。 2. **查询执行**:...

    lucene源码和程序

    Lucene是Apache软件基金会下的一个项目,它是一个高性能、全文本搜索库,完全用Java编写。作为一款开源的全文检索工具包,...通过学习和使用Lucene源码,你可以更深入地理解全文检索的工作机制,提升自己的开发技能。

    lucene-3.0.1-src.zip

    《Apache Lucene 3.0.1 源码解析》 Apache Lucene 是一个开源全文搜索引擎库,它为开发者提供了构建高级搜索功能所需的基本工具和算法。在深入探讨 Lucene 3.0.1 版本之前,我们先来了解一下 Lucene 的核心概念。 ...

    Lucene 源码解析

    在创建完最重要的IndexWriter之后,就开始遍历需要索引的文件,构造对应的Document和Filed类,最终通过IndexWriter的addDocument函数开始索引。 Document的构造函数为空,StringField、TextField和Field的构造函数...

    lucene-in-action-clone:lucene-in-action 一书中源代码的克隆

    在源代码中,你可以看到如何使用Lucene API创建索引,这涉及到Analyzer(分析器)用于文本预处理,Document(文档)用于存储信息,Field(字段)用于定义文档结构,以及IndexWriter(索引写入器)用于将文档写入索引...

    lucene3源码分析

    ### Lucene3源码分析知识点概述 #### 一、全文检索的基本原理 ##### 1. 总论 全文检索系统是一种高效的信息检索技术,能够帮助用户在海量文档中快速找到包含特定关键词的信息。Lucene是Java领域内最受欢迎的全文...

    lucene4.10.4源码包

    `Analyzer`类用于将输入文本分解为关键词,`Document`类用于封装文档信息,而`Field`类则定义了字段的类型和特性。 2. **倒排索引** 倒排索引是Lucene的核心数据结构,它允许快速定位包含特定关键词的文档。`Term`...

Global site tag (gtag.js) - Google Analytics