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


相关推荐

  • vue开发环境搭建(win7)

    vue开发环境搭建(win7)vue开发环境搭建-win71.安装node,js2.设置nodeglobal(全局)和cache(缓存)路径3.配置环境变量4.基于Node.js安装cnpm(淘宝镜像)5.安装vue6.安装vue脚手架vue-cli7.项目创建8.添加相关依赖9.修改端口号10.运行项目1.安装node,js下载node.js安装包:node.js下载官网在这里,我选择…

    2022年8月30日
    1
  • CentOS7 安装 kafka「建议收藏」

    CentOS7 安装 kafka「建议收藏」文章目录一、安装JDK二、安装zookeeper三、安装kafka一、安装JDKrpm-qa|grepjavarpm-qa|grepjdkrpm-qa|grepgcjrpm-qa|grepjava|xargsrpm-e–nodeps #卸载老版本yumlistjava-1.8*yuminstalljava-1.8.0-openjdk*-yjava-version二、安装zookeeper官方地址:https://ar

    2022年6月6日
    26
  • java mediatype utf-8_Java MediaType.APPLICATION_JSON_UTF8屬性代碼示例

    java mediatype utf-8_Java MediaType.APPLICATION_JSON_UTF8屬性代碼示例/***Searches{@linkorg.springframework.web.bind.annotation.RequestMappingRequestMapping}*annotationonthegivenmethodargumentandextracts*IfRequestMappingannotationisnotfound,NoRequestM…

    2022年5月12日
    34
  • phpstorm 激活码密钥无效(JetBrains全家桶)

    (phpstorm 激活码密钥无效)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年4月1日
    262
  • scrapy爬虫部署服务器「建议收藏」

    scrapy爬虫部署服务器「建议收藏」scrapy爬虫部部署服务器时间:2020年5月27日18:28:30作者:钟健记录:scrapy爬虫关键字:scrapyscrapydscrapydweb一、scrapy爬虫部署服务器scrapy通过命令行运行一般只用于测试环境,而用于运用在生产环境则一般都部署在服务器中进行远程操作。scrapy部署服务器有一套完整的开源项目:scrapy+scrapyd(服务端)+scrapy-client(客户端)+scrapydweb1、scrapyd1.介绍Scrapyd是用于部署和运

    2022年6月18日
    26
  • 03LaTeX学习系列之—TeXworks的使用

    03LaTeX学习系列之—TeXworks的使用

    2021年7月2日
    59

发表回复

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

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