LUCENE3.0 自学吧 5 TokenStream

LUCENE3.0 自学吧 5 TokenStream
研究Lucene分析器的实现。
Analyzer抽象类
所有的分析器的实现,都是继承自抽象类Analyzer,它的源代码如下所示:
packageorg.apache.lucene.analysis;importjava.io.Reader;publicabstractclassAnalyzer{//通过Field的名称,和一个Reader对象,创建一个分词流,该方法是抽象方法publicabstractTokenStrea

大家好,又见面了,我是你们的朋友全栈君。

研究Lucene分析器的实现。

Analyzer抽象类

所有的分析器的实现,都是继承自抽象类Analyzer ,它的源代码如下所示:

这里,tokenStream()的作用非常大。它返回一个TokenStream类对象 ,这个TokenStream类对象应该是已经经过分词器处理过的

与Analyzer抽象类有关的其他类

TokenStream也是一个抽象类:

TokenStream类的方法表明,它最基本的是对分词流的状态进行管理。具体地,它如何对分析的对象处理,应该从继承该抽象类的子类的构造来看。

在包org.apache.lucene.analysis下可以看到有两个TokenStream的子类TokenizerTokenFilter ,它们还都是抽象类 ,从这两个抽象类可以看出,是在TokenStream的基础上,按照功能进行分类实现:处理分词、过滤分词

Tokenizer类在Lucene中定义如下所示:

接着,看看TokenFilter类的实现,TokenFilter类在Lucene中定义如下 所示:

TokenFilter是可以嵌套Tokenizer的:

当一个Tokenizer对象不为null时,如果需要对其进行过滤,可以构造一个TokenFilter来对分词的词条进行过滤。

同样地,在包org.apache.lucene.analysis下可以找到继承自Tokenizer类的具体实现类。

很明显了,实现Tokenizer类的具体类应该是分词的核心所在 了。

对指定文本建立索引之前,应该(1) 先构造Field对象 ,在此基础上(2) 再构造Document对象 ,然后(3) 添加到IndexWriter中进行分析处理 。在(4) 这个分析处理过程中,包含对其进行分词(Tokenizer) ,而(5) 经过分词处理以后返回的是一个Token 对象 (经过分词器得到的词条),它可能是Field中的一个Term的一部分

看一看Token类都定义了哪些内容:

 

最后 一个关系图 不太会画,里边的所有关系均为继承…

LUCENE3.0 自学吧 5 TokenStream

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163104.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea202.3.3激活码[在线序列号]

    idea202.3.3激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    454
  • 地理加权回归模型步骤_地理加权回归中的拟合度

    地理加权回归模型步骤_地理加权回归中的拟合度目录数据准备加载需要的R包导入空间数据空间自相关分析空间邻域面数据空间邻域点数据空间邻域全局空间自相关局部空间自相关空间回归分析线性回归分析地理加权回归经典的线性回归模型是建立在最小二乘法(OLS模型)基础上对参数进行“平均”或“全局”估计。如果自变量为空间数据,且自变量间存在空间自相关性,传统回归模型(OLS模型)残差项独立的假设将无法满足。地理加权回归(GWR)模型能够反映参数在不同空间的空间非平稳性,使变量间的关系可以随空间位置的变化而变化,其结果更符合客观实际,能反映局部情况。杨晴青,刘倩

    2022年10月7日
    0
  • ASMM与AMM「建议收藏」

    ASMM与AMM「建议收藏」ASMM(AutomaticSharedMemoryManagement,自动共享内存管理)是Oracle10g引入的概念。通过使用ASMM,就不需要手工设置相关内存组件的大小,而只为SGA设置一个总的大小,Oracle的MMAN进程(MemoryManagerProcess,内存管理进程)会随着时间推移,根据系统负载的变化和内存需要,自动调整SGA中各个组件的内存大小。ASMM的…

    2022年5月2日
    84
  • 列举数据挖掘领域的十大挑战问题

    列举数据挖掘领域的十大挑战问题

    2021年8月23日
    72
  • vuetify富文本编辑器_vue富文本编辑器的使用

    vuetify富文本编辑器_vue富文本编辑器的使用最近再弄一个后台管理系统,挑选了不少的编辑器,最终选择了tinymce,UI精美,功能模块多,可按需加载配置来一张tinymce官网的完整功能的图(没梯子可能访问速度有点慢…)下面开始工作:插件安装tinymce官方提供了一个vue的组件tinymce-vue如果有注册或购买过服务的话,直接通过组件配置api-key直接使用,像我这种懒的注册或者购买的直接下载tinymce,自力更生…

    2025年6月5日
    0
  • 产品需求管理[通俗易懂]

    产品需求管理[通俗易懂]第三课需求管理1需求管理是什么1.1需求挖掘:看四块,自己行业,总体趋势,未来方向,商业模式。最直接的需求一定来源于用户,用户访谈,用户反馈,调查问卷,社交平台。1.2需求匹配:需求挖掘解决发现

    2022年8月5日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号