`
guming123416
  • 浏览: 18745 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Lucene(2.4.1)技术研究(4)--Field源代码

阅读更多

Field类(类似数据库中的字段与属性)
该类实现接口:Fieldable 继承静态类: AbstractField
Fieldable接口。主要是描述一些基础信息的内容
设置权重以及获取权重 [void setBoost(float boost), float getBoost();]
获取名称String name();
获取String类型的值public String stringValue();
以Reader方式返回public Reader readerValue();
以二进制或者TokenStream 方式返回public byte[] binaryValue();public TokenStream tokenStreamValue();
是否被存储boolean isStored();
是否被索引boolean isIndexed();
是否被分词boolean isTokenized();
是否是压缩存储 boolean isCompressed();
是否是二进制boolean isBinary();
......其他的读者可以参考源代码
AbstractField抽象类定义的一些常量:
protected String name = "body"; //表示该Filed的名称
protected boolean storeTermVector = false; //表示是否存储词条向量
protected boolean storeOffsetWithTermVector = false; //存储词条向量的偏移量
protected boolean storePositionWithTermVector = false; //存储词条向量的位置
protected boolean omitNorms = false; //
protected boolean isStored = false; //是否存储
protected boolean isIndexed = true; //是否是索引
protected boolean isTokenized = true; //是否是分词
protected boolean isBinary = false; //是否是二进制数据
protected boolean isCompressed = false; //是否是压缩
protected boolean lazy = false; //是否是延迟
protected boolean omitTf = false; //
protected float boost = 1.0f; //设置激励因子
protected Object fieldsData = null; //Field的内部属性的具体内容
protected int binaryLength; //二进制数据长度
protected int binaryOffset; //二进制数据偏移量

Filed类源代码解析
首先Filed内部定义了三个静态类Store、Index、TermVector。
//定一个静态类Store ,主要为了设置Field的存储属性
public static final class Store extends Parameter implements Serializable {
private Store(String name) {
super(name);
}
//使用压缩的方式来存储Field的值
public static final Store COMPRESS = new Store("COMPRESS");
//在索引中存储Field的值
public static final Store YES = new Store("YES");
//在索引中不存贮Field的值
public static final Store NO = new Store("NO");
}
//定一个静态类Index ,主要为了设置Field的索引属性
public static final class Index extends Parameter implements Serializable {
private Index(String name) {
super(name);
}
//不对Field进行索引,所以这个Field就不能被检索到(一般来说,建立索引而使它不被检索,这是没有意义的)
//如果对该Field还设置了Field.Store为Field.Store.YES或Field.Store.COMPRESS,则可以检索
public static final Index NO = new Index("NO");

//对Field进行索引,同时还要对其进行分词(由Analyzer来管理如何分词)
public static final Index ANALYZED = new Index("ANALYZED");
//废弃的属性,使用ANALYZED 来替代
public static final Index TOKENIZED = ANALYZED;
//对Field进行索引,但是不对该Field使用分词
public static final Index NOT_ANALYZED = new Index("NOT_ANALYZED");
//废弃的属性,使用NOT_ANALYZED来替代
public static final Index UN_TOKENIZED = NOT_ANALYZED;
//即不对Field索引,也不对其使用Analyzer来分词
public static final Index NOT_ANALYZED_NO_NORMS = new Index("NOT_ANALYZED_NO_NORMS");
//废弃的属性,有NOT_ANALYZED_NO_NORMS来替代
public static final Index NO_NORMS = NOT_ANALYZED_NO_NORMS;
//对Field属性,使用分词,但是不是使用Analyzer来分词
public static final Index ANALYZED_NO_NORMS = new Index("ANALYZED_NO_NORMS");
}
这是一个与词条有关的类。因为在检索的时候需要指定检索关键字,通过为一个Field添加一个TermVector,就可以在检索中把该Field检索到。
public static final class TermVector extends Parameter implements Serializable {
private TermVector(String name) {
super(name);
}
//不存储
public static final TermVector NO = new TermVector("NO");
//为每个Document都存储一个TermVector
public static final TermVector YES = new TermVector("YES");
//存储,并且存在位置信息
public static final TermVector WITH_POSITIONS = new TermVector("WITH_POSITIONS");
//存储,并且存贮偏移量信息
public static final TermVector WITH_OFFSETS = new TermVector("WITH_OFFSETS");
//存储位置、偏移量等所有信息
public static final TermVector WITH_POSITIONS_OFFSETS = new TermVector("WITH_POSITIONS_OFFSETS");
}

构造函数
public Field(String name, String value, Store store, Index index)
public Field(String name, String value, Store store, Index index, TermVector termVector)
public Field(String name, Reader reader)
public Field(String name, Reader reader, TermVector termVector)
public Field(String name, TokenStream tokenStream)
public Field(String name, TokenStream tokenStream, TermVector termVector)
public Field(String name, byte[] value, Store store)
public Field(String name, byte[] value, int offset, int length, Store store)

流程:
首先检查name以及values不能为空以及Nnull。
然后检查是否是存储以及是否分词如果两者都是No,则抛出异常。
然后检查是否存储以及是否向量分词,如果两者都是No',则抛出异常。
然后将该Filed的名称命令传递过来的名称源代码(this.name = name.intern)
表示获取JVM String常量池的地址
此时根据Store的值,来设置是否存储以及压缩的值
然后根据Index的值,来设置是否索引、是否分词、omitNorms 的值以及置是否是二进制
然后开始根据TermVector 的值,来设置是否存储向量、是否存储偏移量、是否存储位置等信息。


以上信息可能存在分析不正确,请大家给指证,本人英语有不怎么好,

分享到:
评论

相关推荐

    MMAnalyzer 分词必导入jar包(lucene-core-2.4.1.jar je-analysis-1.5.3.jar)

    本篇文章将深入探讨MMAnalyzer的使用以及与之相关的两个核心JAR包:`jeasy.analysis.MMAnalyzer`和`lucene-core-2.4.1.jar`。 首先,MMAnalyzer是JeasyAnalysis的一部分,JeasyAnalysis是一个轻量级的中文分析库,...

    MMAnalyzer 分词jar包(lucene-core-2.4.1.jar je-analysis-1.5.3.jar)

    "lucene-core-2.4.1.jar"是Lucene的核心库,包含了Lucene的基本功能,如索引构建、查询解析、搜索等功能。虽然2.4.1版本相对较老,但在当时,它已经相当成熟,能够支持各种复杂的文本处理任务。这个库是MMAnalyzer...

    je-analysis-1.5.3、lucene-core-2.4.1分词组件

    本文将深入探讨"je-analysis-1.5.3"和"lucene-core-2.4.1"这两个分词组件,以及它们在相关场景中的应用。 首先,让我们了解什么是分词。分词,即词语切分,是自然语言处理(NLP)中的基本任务之一,它的目标是将...

    lucene-analyzers-smartcn-7.7.0-API文档-中文版.zip

    赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-analyzers-smartcn-7.7.0.pom; 包含翻译后的API文档:lucene-analyzers-smartcn-7.7.0-javadoc-API文档-中文(简体)版....

    lucene-analyzers-common-6.6.0-API文档-中文版.zip

    赠送源代码:lucene-analyzers-common-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-analyzers-common-6.6.0.pom; 包含翻译后的API文档:lucene-analyzers-common-6.6.0-javadoc-API文档-中文(简体)版.zip;...

    lucene-core-7.7.0-API文档-中文版.zip

    赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene-core-7.7.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.lucene:lucene...

    lucene-backward-codecs-7.3.1-API文档-中英对照版.zip

    赠送源代码:lucene-backward-codecs-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-codecs-7.3.1.pom; 包含翻译后的API文档:lucene-backward-codecs-7.3.1-javadoc-API文档-中文(简体)-英语-对照...

    lucene-spatial-extras-7.3.1-API文档-中英对照版.zip

    赠送源代码:lucene-spatial-extras-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras-7.3.1.pom; 包含翻译后的API文档:lucene-spatial-extras-7.3.1-javadoc-API文档-中文(简体)-英语-对照版....

    lucene-analyzers-smartcn-7.7.0-API文档-中英对照版.zip

    赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-analyzers-smartcn-7.7.0.pom; 包含翻译后的API文档:lucene-analyzers-smartcn-7.7.0-javadoc-API文档-中文(简体)-英语...

    lucene-spatial-extras-7.2.1-API文档-中英对照版.zip

    赠送源代码:lucene-spatial-extras-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras-7.2.1.pom; 包含翻译后的API文档:lucene-spatial-extras-7.2.1-javadoc-API文档-中文(简体)-英语-对照版....

    lucene-spatial-extras-6.6.0-API文档-中英对照版.zip

    赠送源代码:lucene-spatial-extras-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras-6.6.0.pom; 包含翻译后的API文档:lucene-spatial-extras-6.6.0-javadoc-API文档-中文(简体)-英语-对照版....

    lucene-backward-codecs-7.2.1-API文档-中英对照版.zip

    赠送源代码:lucene-backward-codecs-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-backward-codecs-7.2.1.pom; 包含翻译后的API文档:lucene-backward-codecs-7.2.1-javadoc-API文档-中文(简体)-英语-对照...

    lucene-backward-codecs-6.6.0-API文档-中英对照版.zip

    赠送源代码:lucene-backward-codecs-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-backward-codecs-6.6.0.pom; 包含翻译后的API文档:lucene-backward-codecs-6.6.0-javadoc-API文档-中文(简体)-英语-对照...

    lucene-backward-codecs-6.6.0-API文档-中文版.zip

    赠送源代码:lucene-backward-codecs-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-backward-codecs-6.6.0.pom; 包含翻译后的API文档:lucene-backward-codecs-6.6.0-javadoc-API文档-中文(简体)版.zip; ...

    lucene-core-7.2.1-API文档-中文版.zip

    赠送源代码:lucene-core-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.2.1.pom; 包含翻译后的API文档:lucene-core-7.2.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.lucene:lucene...

    lucene-suggest-6.6.0-API文档-中文版.zip

    赠送源代码:lucene-suggest-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-suggest-6.6.0.pom; 包含翻译后的API文档:lucene-suggest-6.6.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache....

    lucene-highlighter-6.6.0-API文档-中文版.zip

    赠送源代码:lucene-highlighter-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-highlighter-6.6.0.pom; 包含翻译后的API文档:lucene-highlighter-6.6.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org...

    lucene-core-6.6.0-API文档-中文版.zip

    赠送源代码:lucene-core-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-6.6.0.pom; 包含翻译后的API文档:lucene-core-6.6.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.lucene:lucene...

    lucene-sandbox-7.2.1-API文档-中文版.zip

    赠送源代码:lucene-sandbox-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-sandbox-7.2.1.pom; 包含翻译后的API文档:lucene-sandbox-7.2.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache....

    lucene-spatial-extras-7.7.0-API文档-中文版.zip

    赠送源代码:lucene-spatial-extras-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-spatial-extras-7.7.0.pom; 包含翻译后的API文档:lucene-spatial-extras-7.7.0-javadoc-API文档-中文(简体)版.zip; Maven...

Global site tag (gtag.js) - Google Analytics