码迷,mamicode.com
首页 > Web开发 > 详细

lucene(三)分词

时间:2015-06-03 11:49:11      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:lucene   分词   

分词

lucene在查询和建立索引文件的过程中,都是基于语素单元来操作的。而分词就是将查询语句,转换为一个个单独的语素单元。
主要通过Analyzer类解析实现,Analyzer通过调用TokenStream来实现。

分词的主要架构:

Analyzer

    常用的有:

    SimpleAnalyzer: 将查询语句转换为语素单元时完成转换为小写的操作。

    StandardAnalyzer :最为常用的智能分词器,通过这两个LowerCaseFilter和StopFilterTokenStream。能完成诸如邮件、字母分析处理。

    WhitespaceAnalyzer :以空格为分词符进行分析处理。

        如:I am coder----I  am  coder 

    analyzer类的结构

        ![这里写图片描述](http://img.blog.csdn.net/20150603114018052)


    Lucene3.5 有9种分词器。继承Analyzer抽象类内部通过tokenStream(String fieldName, Reader reader)方法来处理读取的查询数据,Analyzer和不同子类分词器的实现,应该能看到组合模式的设计。

TokenStream:经过分词、过滤处理后的结果流。

    主要有public abstract boolean incrementToken() throws IOException 方法来实现分词后各语素的处理读取操作。
    . tokenFilter 和 Tokenizer来实现 去停留词和得到分词单元。

一般处理流程
技术分享

分词器主要流程

第一步:reader对象读取分词数据
第二步:Tokenier 负责将一组数组分解为一个个的单元
    如:I am coder----I  am  coder 
第三步:经过多重过滤器对分词数据进行过滤操作。过滤的作用是去除停留词,并形态还原,统一大小写等。
    去除停留词就是去除类似in of等没有确切含义的词,形态还原则是将过去分词、过去式这样的词还原为原来的形态。如:termming-term。


总的来讲,lucene的分词器主要做了一个什么样的工作呢?从查询语句分解为一个个查询单元的工作。这么做的目的是为了lucene在查询时候更好的细粒度的去匹配已创建的索引文件。

lucene(三)分词

标签:lucene   分词   

原文地址:http://blog.csdn.net/cfl20121314/article/details/46343101

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!