首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Lucene源码解析–TokenStream和AttributeSource

TokenStream即是从Document的域(field)中或者查询条件中抽取一个个分词而组成的一个数据流。...这些属性都保存在AttributeSource中,而AttributeSource正是TokenStream的父类。...TokenStream的工作流程: 1.实例化TokenStream, 添加属性到AttributeSource,或从AttributeSource中获取属性. 2.调用reset()方法,设置stream...TokenStream的作用是从给入的文本中不断解析出Token,具体的做法是TokenStream有方法incrementToken,每次调用 将产生待分析文本的下一个Token,其实incrementToken...,然后进行分析并填充 属性,这样做无可厚非,但是请考虑TokenStream流的嵌套,也就是说嵌套的内层流获取的属性将作为外层流的分析的输入,如果使用上述方法实现 TokenStream,则必然嵌套流的每层流都将有自己的属性实例

54520

Lucene分词实现:Analyzer、TokenStream「建议收藏」

Analyzer内部主要通过TokenStream类实现。Tonkenizer类、TokenFilter类是TokenStream的两个子类。...(2)public abstract TokenStream tokenStream(String fieldName, Reader reader); 该方法需要自定义的分词器去实现,并返回TokenStream...设置为可复用TokenStream,将同一线程中前面时间的TokenStream设置为可复用。那些无必要同一时刻使用多个TokenStream的调用者使用这个方法,可以提升性能。...(4)接着,在tokenStream()方法实现中使用Tonkenizer和TokenFilter,例如StandardAnalyzer类中的tokenStream实现: TokenStream result...,其输入是另一个TokenStream,主要职责是对TokenStream进行过滤,例如去掉一些索引词、替代同义索引词等操作。

68720

Lucene中AttributeSource作为TokenStream父类的原因

lucene3.0 lucene中有如下的类层次: org.apache.lucene.util.AttributeSource org.apache.lucene.analysis.TokenStream...Lucene中AttributeSource作为TokenStream父类的原因的 2.1 TokenStream的作用是从给入的文本中不断解析出Token,具体的做法是TokenStream有方法incrementToken...,每次调用将产生待分析文本的下一个Token,其实incrementToken做的事情就是填充我所关心的若干属性,通过这些属性来反馈分析结果,因此自然而然的一种想法是TokenStream的派生类中有若干的属性成员...,每次调用incrementToken都首先清除上一次的属性信息,然后进行分析并填充属性,这样做无可厚非,但是请考虑TokenStream流的嵌套,也就是说嵌套的内层流获取的属性将作为外层流的分析的输入...当我们将TokenStream所关心的属性抽象的由AttributeSource来管理时,我们在进行流的嵌套时,根据对AttributeSource的分析可知,外层流定义自己关心的属性,并不需要在构造函数中实例化该属性

51310

lucene分词器中的Analyzer,TokenStream, Tokenizer, TokenFilter

分词器的核心类: Analyzer: 分词器 TokenStream: 分词器做好处理之后得到的一个流。...这个流中存储了分词的各种信息,可以通过TokenStream有效的获取到分词单元。...以下是把文件流转换成分词流(TokenStream)的过程 首先,通过Tokenizer来进行分词,不同分词器有着不同的Tokenzier,Tokenzier分完词后,通过TokenFilter对已经分好词的数据进行过滤...过滤完之后,把所有的数据组合成一个TokenStream;以下这图就是把一个reader转换成TokenStream: 这个TokenStream中存有一些属性,这些属性会来标识这个分词流的元素。...stream = a.tokenStream("content", new StringReader(str));// 放回一个TokenStream; /** * 创建一个属性,这个属性会添加到流里

37530
领券