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

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

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


相关推荐

  • 剑指Offer面试题:8.二进制中1的个数建议收藏

    一题目:二进制中1的个数二可能引起死循环的解法00001010>>2=0000001010001010>>3=11110001那么,问题来了:上面的方法如果输入一个

    2021年12月19日
    54
  • 启动mysql的命令 linux命令,linux如何启动mysql服务 linux启动mysql服务命令是什么(图文)…

    启动mysql的命令 linux命令,linux如何启动mysql服务 linux启动mysql服务命令是什么(图文)…mysql 数据库是一种开放源代码的关系型数据库管理系统 有很多朋友都在使用 一些在 linux 系统上安装了 mysql 数据库的朋友 却不知道该如何对 mysql 数据库进行配置 那么 linux 该如何启动 mysql 服务呢 接下来小编就给大家带来 linux 启动 mysql 服务的命令教程 R1d 电脑 数码 手机应用问题解决的 IT 技术网站 seo 云狐网具体步骤如下 R1d 电脑 数码 手机应用问题解决的 IT 技术网

    2025年8月31日
    0
  • MD5加密详解

    MD5加密详解MD5加密详解加密过程:密码:123456(明文形式)—–>加密后49ba59abbe56e0571.密码在请求提交后到达控制器2.到达控制后通过加密规则,转换成密文3.在经过DAO查询与数据库中已经存在的密文密码比对是否一直,一致,则放行。用户注册密码时是加密存储的用户修改密码时,也需要进行加密存储加密规则:加密规则可以自定义,在项目中通常使用BASE64和MD5,本文使用的加密规则就是MD5,BASE64:可反编码的编码方式​

    2022年7月27日
    9
  • [精选]详细介绍MySQL中常见的锁

    [精选]详细介绍MySQL中常见的锁

    2022年2月19日
    46
  • 如何将excel中的数据导入mysql_将外部sql文件导入MySQL步骤

    如何将excel中的数据导入mysql_将外部sql文件导入MySQL步骤客户准备了一些数据存放在excel中,让我们导入到mysql中。先上来我自己把数据拷贝到了txt文件中,自己解析txt文件,用JDBC循环插入到数据库中。后来发现有更简单的方法:1先把数据拷贝到txt文件中2打开mysql命令行执行下面的命令就行了LOADDATALOCALINFILE’C:\\temp\\yourfile.txt’INTOTA…

    2022年9月21日
    2
  • SQL EXITS用法

    SQL EXITS用法比如在Northwind数据库中有一个查询为SELECTc.CustomerId,CompanyNameFROMCustomerscWHEREEXISTS(SELECTOrderIDFROMOrdersoWHEREo.CustomerID=c.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是Cu

    2025年6月24日
    3

发表回复

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

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