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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Flume和Kafka的组合使用

    Flume和Kafka的组合使用在Windows系统中打开第1个cmd窗口,执行如下命令启动Zookeeper服务:cdC:\zookeeper\apache-zookeeper-3.7.1-bin.\bin\zkServer.cmd打开第2个cmd窗口,然后执行下面命令启动Kafka服务:cdC:\kafka_2.12-2.4.0\kafka_2.12-2.4.0.\bin\windows\kafka-server-start.bat.\config\server.properties打开第.

    2022年6月23日
    22
  • python 图片图像转化视频[通俗易懂]

    python 图片图像转化视频

    2022年2月19日
    46
  • object对象转换成map_object强转成map

    object对象转换成map_object强转成map1、Object转换成map的方法importjava.lang.reflect.Field;importjava.util.HashMap;importjava.util.Map;/***将Object对象里面的属性和值转化成Map对象**@paramobj*@return*@throwsIllegalAccessException*/publicstaticMap<String,

    2025年6月3日
    2
  • webstorm激活码最新2021(JetBrains全家桶)

    (webstorm激活码最新2021)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~7…

    2022年3月26日
    108
  • 计算机桌面锁写快捷,锁定计算机快捷键_锁定计算机的快捷键

    计算机桌面锁写快捷,锁定计算机快捷键_锁定计算机的快捷键2017-01-0515:11:14当有事需暂时离开,又不想他人动用电脑时,可采取锁定桌面的办法。1、首先要在电脑中设置好一个用户帐户密码(开机密码)。在锁定桌面时,只需按Win十L键(即按住那个有微软视窗图标的键…2016-12-1814:43:081在电脑上键盘上找到Windows键和L键,这两个键就是快速锁定计算机的关键所在步骤阅读2两只手一只手按Windows键,另一只手按L键,…

    2022年7月21日
    14
  • 鸿蒙HarmonyOS应用开发初体验[通俗易懂]

    鸿蒙HarmonyOS应用开发初体验[通俗易懂]https://developer.huawei.com/consumer/cn/forum/communityHome近期(4.12~4.25)鸿蒙OS正在举行开发者日活动,趁机参加并了解一下鸿蒙OS的现状和应用开发体验。1.开发环境搭建下载安装IDE(当前版本2.1Beta3)华为为Harmony应用开发提供了配套的IDE:DevEcoStudio(内心比较排斥这种带Eco字眼儿的命名,PPT怎么吹无所谓,开发工具咱能不能务实一点儿?)下载IDE需要登录Huawei账号,我安装.

    2022年5月18日
    52

发表回复

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

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