lucene2.4.1的TokenStream

lucene2.4.1的TokenStream[code="java"]importjava.io.IOException;importorg.apache.lucene.analysis.Token;importorg.apache.lucene.index.Payload;/***TokenStream用来分析文字流,按一定的规则罗列token,在lucene有字节流是即将要索引的文本,或者查询的关键字。…

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

import java.io.IOException;

import org.apache.lucene.analysis.Token;
import org.apache.lucene.index.Payload;

/**
* TokenStream用来分析文字流,按一定的规则罗列token,在lucene有字节流是即将要索引的文本,或者查询的关键字。
* <p>
* 它是一个抽象类,它的子类有如下两种:
* <ul>
* <li>分词器-Tokenizer,Tokenizer是以Reader对象做为输入;
* <li>过滤器-TokenFilter,主要用来处理词汇单元的部分内容过滤功能。与分词器比较最大的区别是它的输入是另一个TokenStream.多个过滤器可以串接起来,形成管道型的流逝过滤器
* </ul>
* NOTE:子类必须要重写next(Token).
*/

public abstract class TokenStream {

/**
* 返回字节流的下一个Token.
*
* @deprecated 被next(Token)所代替 .
*/
public Token next() throws IOException {
final Token reusableToken = new Token();
Token nextToken = next(reusableToken);

if (nextToken != null) {
Payload p = nextToken.getPayload();
if (p != null) {
nextToken.setPayload((Payload) p.clone());
}
}

return nextToken;
}

/**
* 返回数据流中的下个Token或null、EOS. 通常情况下,为了有着更好的性能,返回的Token和输入的Token应该是同一个对象
* 但是这不是必须,也可以返回一个新的Token. .
* <p>
* 调用该方法的对象和实现该方法的对象有一种合约:
* <ul>
* <li>调用该方法的对象必须在再次调用该方法之前要使用完毕之前的Token.</li>
* <li>实现该方法的在每次设置之前都要先调用clear()。把之前的属性的清空</li>
* </ul>
* 当Token被返回之后,调用者可以随意改变该Token。所以producer如果想保存Token,必须要在返回Token之前Clone()克隆一个新的Token
*
* @param reusableToken 该Token或许被返回,或许返回一个新的Token。reusableToken不能为null。
* @return
*/
public Token next(final Token reusableToken) throws IOException {
assert reusableToken != null;
return next();
}

/**
* 重置数据流的标记位置.这个方法这是可选的。 Reset()通常情况下不需要的.如果
* 但是如果Token要被使用多次,那就有重写实现reset()接口 .
* 如果TokenStream缓存了Token,调用rest()会返回缓存的Token
*/
public void reset() throws IOException {
}

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163097.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 架构学习——业务架构图

    架构学习——业务架构图一、什么是业务架构图?业务架构图,顾名思义就是对于产品的业务架构进行梳理和整合,它表达的是业务系统之间的关系,帮助开发人员梳理业务结构。二、为什么要画业务架构图?业务架构图帮我们更好的从宏观的角度整体性的审查我们的产品帮助用户和需求方从业务角度出发更好的了解我们的产品功能有了业务架构图我们可以更好的对目前已有的功能和以后计划开发的功能进行抽象、设计、开发三、如何画业务架构图?站在巨人的肩膀上我们要学会站在巨人的肩膀上学习,先看看一些比较牛的公司他们是怎么画的业务架构图,借鉴他人的画法和思

  • java 实用 代码_java新手实用代码有哪些?java新手代码大全「建议收藏」

    java 实用 代码_java新手实用代码有哪些?java新手代码大全「建议收藏」对于java新手来说,积累一些实用的基础代码还是很有必要的,毕竟写代码是需要实践以及积累的,那么接下来,我们就来给大家分享一些java新手代码给大家参考!1.字符串有整型的相互转换Stringa=String.valueOf(2);//integertonumericstringinti=Integer.parseInt(a);//numericstringtoan…

  • native2ascii没有找到_ascii数字转换

    native2ascii没有找到_ascii数字转换native2ascii是sunjavasdk提供的一个转码工具,用来将别的文本类文件(比如*.txt,*.ini,*.properties,*.java等等)编码转为Unicode编码。1.如何获取native2ascii.exe?安装了jdk后,假如你是在windows上安装,那么在jdk的安装目录下,会有一个bin目录, 该目录下就有我们所需要的nativ

  • android定时器写法

    android定时器写法在Android开发中,定时器一般有以下3种实现方法:一、采用Handler与线程的sleep(long)方法二、采用Handler的postDelayed(Runnable,long)方法三、采用Handler与timer及TimerTask结合的方法下面逐一介绍:一、采用Handle与线程的sleep(long)方法Handler主要用来处理接受到的消息。这只是最主要

  • 图片的url地址怎么获取_网站url出现很多后缀

    图片的url地址怎么获取_网站url出现很多后缀varfname="."+url.split(‘?’)[0].substring(url.split(‘?’)[0].lastIndexOf(".")+1).toLowerCase();

  • ODS概念总结_ODS系统

    ODS概念总结_ODS系统概念DB(Database)数据库ODS(OperationalDataStore)运营数据存储DW(DataWarehouse)数据仓储DM(DataMarket)数据集市ODS产生背景人们对数据的处理行为可以划分为事务型数据处理(OLTP,On-LineTransactionProcessing)和分析型数据处理(OLAP,On-LineAnalyticProces…

发表回复

您的电子邮箱地址不会被公开。

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