Lucene内置的Analyzer分词器

写这篇博客的时候自己在已经读到第六章分词器了,在写代码之前,这个分词器,让我起了浓厚的兴趣。

//===========================================================================================//

以下四条分词器适用于英文,不适用于中文

//===========================================================================================//

1、WhitespaceAnalyzer

      仅仅是去除空格,对字符没有lowcase化,不支持中文;

      并且不对生成的词汇单元进行其他的规范化处理。

2、SimpleAnalyzer

    功能强于WhitespaceAnalyzer, 首先会通过非字母字符来分割文本信息,然后将词汇单元统一为小写形式。该分析器会去掉数字类型的字符。

3、StopAnalyzer

    StopAnalyzer的功能超越了SimpleAnalyzer,在SimpleAnalyzer的基础上增加了去除英文中的常用单词(如the,a等),也可以更加自己的需要设置常用单词;不支持中文

4、StandardAnalyzer

    英文的处理能力同于StopAnalyzer.支持中文采用的方法为单字切分。他会将词汇单元转换成小写形式,并去除停用词和标点符号。

//=============================================================================================//

以下2条分词器适用于中文

//==============================================================================================//

5、CJKAnalyzer

中日韩分析器,能对中,日,韩语言进行分析的分词器,但是对中文支持效果一般,一般不用

6、SmartChineseAnalyzer

对中文支持稍好,但扩展性差,扩展词库,禁用词库和同义词库等不好处理

5、CJKAnalyzer

中日韩分析器,能对中,日,韩语言进行分析的分词器,但是对中文支持效果一般,一般不用

//=========================================================================//

简单的测试:

  网络代码:

//=========================================================================//

public class AnalyzerDemo {

/**WhitespaceAnalyzer分析器*/

public void whitespaceAnalyzer(String msg){

WhitespaceAnalyzer analyzer = new WhitespaceAnalyzer(Version.LUCENE_36);

this.getTokens(analyzer, msg);

}

/**SimpleAnalyzer分析器*/

public void simpleAnalyzer(String msg){

SimpleAnalyzer analyzer = new SimpleAnalyzer(Version.LUCENE_36);

this.getTokens(analyzer, msg);

}

/**StopAnalyzer分析器*/

public void stopAnalyzer(String msg){

StopAnalyzer analyzer = new StopAnalyzer(Version.LUCENE_36);

this.getTokens(analyzer, msg);

}

/**StandardAnalyzer分析器*/

public void standardAnalyzer(String msg){

StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);

this.getTokens(analyzer, msg);

}

private void getTokens(Analyzer analyzer,String msg){

TokenStream tokenStream=analyzer.tokenStream("content", new StringReader(msg));

this.printTokens(analyzer.getClass().getSimpleName(),tokenStream);

}

private void printTokens(String analyzerType,TokenStream tokenStream){

CharTermAttribute ta = tokenStream.addAttribute(CharTermAttribute.class);

StringBuffer result =new StringBuffer();

try {

while(tokenStream.incrementToken()){

if(result.length()>0){

result.append(",");

}

result.append("["+ta.toString()+"]");

}

} catch (IOException e) {

e.printStackTrace();

}

System.out.println(analyzerType+"->"+result.toString());

}

}

MAIN方法”:

private TokenizerDemo demo = null;

//private String msg = "我喜欢你,我的祖国!china 中国";

private String msg = "I love you, China!B2C";

@Before

public void setUp() throws Exception {

demo=new TokenizerDemo();

}

@Test

public void testWhitespaceAnalyzer(){

demo.whitespaceAnalyzer(msg);

}

@Test

public void testSimpleAnalyzer(){

demo.simpleAnalyzer(msg);

}

@Test

public void testStopAnalyzer(){

demo.stopAnalyzer(msg);

}

@Test

public void testStandardAnalyzer(){

demo.standardAnalyzer(msg);

}

}

5、CJKAnalyzer

中日韩分析器,能对中,日,韩语言进行分析的分词器,但是对中文支持效果一般,一般不用

时间: 2024-10-25 21:43:14

Lucene内置的Analyzer分词器的相关文章

lucene内存索引库、分词器

内存索引库 特点 在内存中开辟一块空间,专门为索引库存放.这样有以下几个特征: 1)    因为索引库在内存中,所以访问速度更快. 2)    在程序退出时,索引库中的文件也相应的消失了. 3)    如果索引库比较大,必须得保证足够多的内存空间. 编码 在cn.hqu.directory 下新建:DirectoryTest /** * 1.能不能设置很多个索引库 *    可以设置很多个索引库 * 2.索引库能不能合并起来 *    如果是内存索引库 *      Directory ramD

Android通过意图使用内置的音频播放器

如果实现一个音频文件的播放,那么在应用程序中提供播放音频文件功能的最简单的方式是利用内置的"Music(音乐)"应用程序的功能--即使用系统自带的或已安装好的音乐播放器来播放指定的音频文件. 本例比较简单,下面直接给出源代码: 布局文件activity_main: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http:/

Lucene的基本使用之Analyzer分词器

提供分词算法,可以把文档中的数据按照算法分词这些分词器,并没有合适的中文分词器,因此一般我们会用第三方提供的分词器:一般我们用IK分词器.1.1.1.1.IK分词器官网:https://code.google.com/p/ik-analyzer/l 概述林良益IK分词器官方版本是不支持Lucene4.X的,有人基于IK的源码做了改造,支持了Lucene4.X:1.1.1.2.基本使用引入IK分词器的依赖: <!-- 引入IK分词器 --> <dependency> <grou

Lucene.Net3.0.3+盘古分词器学习使用

一.Lucene.Net介绍 Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎.开发人员可以基于Lucene.net实现全文检索的功能. Lucene.net是Apache软件基金会赞助的开源项目,基于Apache License协议. Lucene.net并不是一个爬行搜索引擎,也不会自动地索引内容.我们得先将要索引的文档中的文本抽取出来,然后再将其加到Lucene.

Lucene实现自定义中文同义词分词器

---------------------------------------------------------- lucene的分词_中文分词介绍 ---------------------------------------------------------- Paoding:庖丁解牛分词器.已经没有更新了 mmseg:使用搜狗的词库 1.导入包(有两个包:1.带dic的,2.不带dic的) 如果使用不带dic的,得自己指定词库位置 2.创建MMSegAnalyzer(指明词库所在的位置

基于lucene的案例开发:分词器介绍

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/42916755 在lucene创建索引的过程中,数据信息的处理是一个十分重要的过程,在这一过程中,主要的部分就是这一篇博客的主题:分词器.在下面简单的demo中,介绍了7中比较常见的分词技术,即:CJKAnalyzer.KeywordAnalyzer.SimpleAnalyzer.StopAnalyzer.WhitespaceAnalyzer.StandardAnalyzer.I

python基础篇【第四篇】内置函数、装饰器:

一.内置函数: 对于一些python中常用的函数,python自身就已经定义了一些函数用于调用,我们就叫它内置函数!如以下都是python中内置的函数! 一些常用的内置函数具体用法: 一些常用的内置函数具体用法: 1.abs():取绝对值 1 n=abs(-2) 2 print(n) 3 4 结果: 5 2 2.all();传入可迭代的对象中,都为真才为真; Fasle: 0,None,"",[],{} ,()都为假True: 1,-1,True,有值返回真. n=all([1,2,3

Python学习之旅 —— 基础篇(四)内置函数、装饰器

本篇要点: 内置函数 装饰器 一.内置函数 # abs() :取绝对值 >>> res = abs(-10) >>> print(res) 10 # 0,None,"",{},[],() 布尔值都为空 # all(),any() 判断值的真假 # all() 所有为真才为真 p = all([0,1,2,3]) # 0为False,所有p 是False print(p) # any() 任意一个为真即为真 p = any((0,""

python学习之路-4 内置函数和装饰器

本篇涉及内容 内置函数 装饰器 内置函数 callable()   判断对象是否可以被调用,返回一个布尔值 1 2 3 4 5 6 7 8 9 10 11 num = 10 print(callable(num))   # num不能够被调用,返回False    def f1():     print("name")    print(callable(f1))     # f1可以被调用,返回True    # 输出 False True ?chr()   将十进制整数转换为asc