1、WhitespaceAnalyzer
仅仅是去除空格,对字符没有lowcase化,不支持中文;
并且不对生成的词汇单元进行其他的规范化处理。
2、SimpleAnalyzer
功能强于WhitespaceAnalyzer, 首先会通过非字母字符来分割文本信息,然后将词汇单元统一为小写形式。该分析器会去掉数字类型的字符。
3、StopAnalyzer
StopAnalyzer的功能超越了SimpleAnalyzer,在SimpleAnalyzer的基础上增加了去除英文中的常用单词(如the,a等),也可以更加自己的需要设置常用单词;不支持中文
4、StandardAnalyzer
英文的处理能力同于StopAnalyzer.支持中文采用的方法为单字切分。他会将词汇单元转换成小写形式,并去除停用词和标点符号。
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());
}
}
测试
public class TestAnalyizer {
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);
}
}
分享到:
相关推荐
提供了一些内置的分析器:最常用的是StandardAnalyzer 2) index模块:负责索引的读写。 对索引文件的segment进行写、合并、优化的IndexWriter类。对索引进行读取和删除操作的IndexReader类。 3) store模块:负责...
基于芷浩仔的MMSeg算法( )实现的中文分词器,并实现lucene.net的分析器以方便在Lucene.Net中使用。本代码来源于王员外( )基于Java版的翻译,升级到了最新版本Lucene.Net(≥3.0.3),并包含简单示例和NuGet...
从3.0版本开始,IK已经发展成为Java通用的分词组件,独立于Lucene项目,同时提供了Lucene的默认优化实现。 在 2012 版本中,IK 实现了简单的分词歧义消除算法,标志着 IK tokenizer 从纯字典分词到模拟语义分词的...
IK Analysis插件将Lucene IK分析器( )集成到elasticsearch中,支持自定义词典。 分析器: ik_smart , ik_max_word , ik_smart ik_max_word : ik_smart , ik_max_word 版本号 IK版本 ES版 主 7.x->主 6.x 6.x...
分析器是Lucence的精华,又分为分词和过滤两部分,而且中文分词更是难点,我的例子里是用从博客园程序中提取出来的Lucene.Net.Analysis.Cn.dll来实现中文分词的,谁有中科院的那套中科院ICTCLAS分词工具的C#版麻烦...
1)org.apache.1ucene.analysis语言分析器,主要用于的切词Analyzer是一个抽象类,管理对文本内容的切分词规则。 2)org.apache.1uceene.document索引存储时的文档结构管理,类似于关系型数据库的表结构。 3)...
分析(Analysis),在Lucene当中指的是将域(Field)文本转换为最基本的索引表示单元——项(Term)的过程。在搜索过程中,这些项用于决定什么样的文档能匹配查询条件。例如,如果这句话“For example, if this ...
对数据源分析,使用Lucene的分析器(Analyzer),根据分析器所得到的词条,构造一个索引器IndexWriter。索引器IndexWriter的功能主要就是创建索引,是建立索引工作中最核心的。 当构造完一个索引器IndexWriter之后,...
适用于Apache Lucene / Solr的土耳其语分析组件 在土耳其,开源软件的使用正日益增长。 Apache Lucene / Solr(和其他 )邮件列表上的土耳其用户正在增加。 该项目利用公共可用的土耳其语NLP工具从中创建。 我创建...
7. 分析器Analysis 16 7.1. 自带分析器和过滤器 16 7.2. 第三方过分析器 17 7.2.1. JE分词用法 17 8. 索引的合并 18 9. 各种Query 18 9.1. 概述 18 9.2. 使用特定的分析器搜索 18 9.3. 按词条搜索—TermQuery 19 9.4...
从3.0版本开始,IK已经发展成为Java通用的分词组件,独立于Lucene项目,同时提供了Lucene的默认优化实现。 在 2012 版本中,IK 实现了简单的分词歧义消除算法,标志着 IK tokenizer 从纯字典分词到模拟语义分词的...
该插件随附以下分析器: mmseg_maxword , mmseg_complex , mmseg_simple和令牌生成器: mmseg_maxword , mmseg_complex , mmseg_simple和token_filter: cut_letter_digit 。 版本号 Mmseg版本 ES版 掌握 5.x->...
elasticsearch-analysis-hanlpHanLP Analyzer for ElasticSearch此分词器基于,提供了HanLP中大部分的分词方式。今年一年都在忙其他事,所以插件更新基本一年没有更新,年底更新一波。今年学习了一下ES向量插件...
IK Analyzer是一个开源的,基于Java语言开发的轻量级的...最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件;从 3.0 版本开始,IK 发展为面向 Java 的公用分词组件,独立亍 Lucene 项目
从3.0版本开始,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。在2012版本中,IK实现了简单的分词歧义排除算法,标志着IK分词器从单纯的词典分词向模拟语义分词衍化。
最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算 法的中文分词组件。新版本的IK Analyzer 3.0则发展为面向Java的公用分词组件,独立于Lucene项目,同时提 供了对Lucene的默认优化实现。 采用...
适用于Elasticsearch的Rosette分析介绍Rosette Analysis插件将Lucene分析模块集成到elasticsearch中。 这些模块封装了(Rosette)。 有关更多信息,请参阅《 Rosette语言学平台应用程序开发人员指南:Lucene / Solr...
IK分析器()集成到elasticsearch中,支持自定义字典。 分析器: ik_smart , ik_max_word ,分词器: ik_smart , ik_max_word 版本 IK版 ES版 掌握 7.x -> 主 6.x 6.x 5.x 5.x 字典配置 IKAnalyzer.cfg.xml可以位于{...
Elasticsearch提供了许多内置分析器,但仍有改进的空间,尤其是对于波斯语言。 该插件提供了用于标记,规范化和阻止波斯文字的工具。 主要特征 标记波斯文字 必要时将空格转换为零宽度非连接符( نیمفاصل...