lucene分词原理及其实现+demo源码

分词:analyzer

lucene基本分词器:SimpleAnalyzer、StopAnalyzer、WhitespaceAnalyzer、StandardAnalyzer

分词流程:
Tokenizer细分:
TokenFilter细分:

对于分词信息的 保存并还原,要求我们的tokenizer储存以下信息:

注:位置增量可用来做同义词;

代码实现分词信息各部分的获取:

 

 注意:自定义分词器和自带的分词器(标准分词器)不同有切词环节,也有过滤环节;整个的分词过程包括,切词和过滤;

切词方式是不是一样完全取决于----选择的tokenizer,比如都选择LetterTokenizer则是一样的切词方式;

 


中文台博大精深,描述词大同小异,很难全面理解概念,,,以下简单总结。。。

注意:以下两个分词器唯一的相同之处就是流程一样,都是先变成tokenizer,再过滤;

 

Lucene分词器:切词(可选letterTokenizer,whitespaceTokenizer等等)+过滤(可选lowercaseFilter,standredFilter等等);

所谓自带的分词器:空格,标准,停用词分词器…是lucene集成版本(自己选择了上述切词方式和上述过滤方式,然后集成)

所谓的自定义分词器:也就是选择上述已经提供的切词方式+选择/修改过滤方式(可操作性大一些)

如自定义停用词分词器(myStopAnalyzer),即选择letterTokenizer切词+stopFilter(可以稍加改进,改进部分只是该方法的参数值,由lucene自带的停用词,改成了自定义的停用词)

至此: myStopAnalyzer就是和空格、标准、停用词分词器这些是同一层级的了;

 

Mmseg分词器:mmseg自己的切词方式+mmseg自己的过滤方式;

修改mmseg分词器的自定义同义词分词器(mySameAnalyzer):mmseg切词方法+自己的过滤方式

因为要封装自己的过滤方法,所以不能直接使用mmseg分词器,但是可以用mmseg的切词逻辑,调用里面的方法,达到它的切词效果,再调用自己的过滤器;

 

  使用分词器的方法:

真正写分词器---是指自己从底层写切词方式+自己写过滤方式;

================================================
以上总结的参考资料为“孔浩lucene视频教程”


 demo源码下载链接:http://download.csdn.net/download/qq_33999844/10251976

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_33999844/article/details/79327001