StandardAnalyzer 是单词分词器:

String msg = "我喜欢你,我的祖国!china 中国,I love you!中华人民共和国";

分词后的结果:[我],[喜],[欢],[你],[我],[的],[祖],[国],[china],[中],[国],[i],[love],[you],[中],[华],[人],[民],[共],[和],[国]

IKAnalyzer 是中文分词器:

分词后的结果:[我],[喜欢],[你],[我],[的],[祖国],[china],[中国],[i],[love],[you],[中华人民共和国]

package com.shrio.lucene;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.util.Version;
import org.wltea.analyzer.lucene.IKAnalyzer; import java.io.IOException;
import java.io.StringReader; /**
* Created by luojie on 2018/4/24.
*/
public class ChineseAnalyerDemo {
/**standardAnalyer分析器 ,Lucene内置中文分析器*/
public void standardAnalyer(String msg){
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_10_4);
this.getTokens(analyzer, msg);
} /**IK Analyzer分析器*/
public void iKanalyer(String msg){
IKAnalyzer analyzer = new IKAnalyzer(true);//当为true时,分词器进行最大词长切分
//IKAnalyzer analyzer = new IKAnalyzer();
this.getTokens(analyzer, msg);
} private void getTokens(Analyzer analyzer, String msg) {
try {
TokenStream tokenStream=analyzer.tokenStream("content", new StringReader(msg));
tokenStream.reset();
this.printTokens(analyzer.getClass().getSimpleName(),tokenStream);
tokenStream.end();
} catch (IOException e) {
e.printStackTrace();
} } 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());
}
}
package com.shrio.lucene;

import org.junit.Before;
import org.junit.Test; /**
* Created by luojie on 2018/4/24.
*/
public class TestChineseAnalyizer { private ChineseAnalyerDemo demo = null; private String msg = "我喜欢你,我的祖国!china 中国,I love you!中华人民共和国";
//private String msg = "I love you, China!B2C";
@Before
public void setUp() throws Exception {
demo=new ChineseAnalyerDemo();
}
@Test
public void testStandardAnalyer(){
demo.standardAnalyer(msg);
demo.iKanalyer(msg);
}
@Test
public void testIkAnalyzer(){
demo.iKanalyer(msg);
}
}

IKAnalyzer 独立使用 配置扩展词典

IKAnalyzer.cfg.xml必须在src根目录下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties> <comment>IK Analyzer 扩展配置</comment>
<!-- 用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">mydict.dic</entry>
<!-- 用户可以在这里配置自己的扩展停用词字典 -->
<entry key="ext_stopwords">ext_stopword.dic</entry> </properties>

lucene随笔 IKAnalyzer StandardAnalyzer的更多相关文章

  1. solr、Lucene、IKAnalyzer这三者关系是怎样的?

    lucene 是开源搜索引擎 solr 是基于 lucene开发的搜索引擎 IK 是中文分词. lucene 不是一个搜索引擎,只是一个基础的文件索引工具包,或者叫“搜索引擎开发包”.不能单独作为程序 ...

  2. Lucene使用IKAnalyzer分词实例 及 IKAnalyzer扩展词库

    文章转载自:http://www.cnblogs.com/dennisit/archive/2013/04/07/3005847.html 方案一: 基于配置的词典扩充 项目结构图如下: IK分词器还 ...

  3. Lucene学习——IKAnalyzer中文分词

    一.环境 1.平台:MyEclipse8.5/JDK1.5 2.开源框架:Lucene3.6.1/IKAnalyzer2012 3.目的:测试IKAnalyzer的分词效果 二.开发调试 1.下载框架 ...

  4. Lucene使用IKAnalyzer分词

    1.分析器    所有分析器最终继承的类都是Analyzer        1.1 默认标准分析器:StandardAnalyzer            在我们创建索引的时候,我们使用到了Index ...

  5. Lucene基于IKAnalyzer配置的词典扩充

    在web项目的src目录下创建IKAnalyzer.cfg.xml文件,内容如下 <?xml version="1.0" encoding="UTF-8" ...

  6. lucene+IKAnalyzer实现中文纯文本检索系统

    首先IntelliJ IDEA中搭建Maven项目(web):spring+SpringMVC+Lucene+IKAnalyzer spring+SpringMVC搭建项目可以参考我的博客 整合Luc ...

  7. Lucene系列四:Lucene提供的分词器、IKAnalyze中文分词器集成、扩展 IKAnalyzer的停用词和新词

    一.Lucene提供的分词器StandardAnalyzer和SmartChineseAnalyzer 1.新建一个测试Lucene提供的分词器的maven项目LuceneAnalyzer 2. 在p ...

  8. 通过lucene的StandardAnalyzer分析器来了解分词

    本文转载http://blog.csdn.net/jspamd/article/details/8194919 不同的Lucene分析器Analyzer,它对TokenStream进行分词的方法是不同 ...

  9. Lucene第一讲——概述与入门

    一.概述 1.什么是Lucene? Lucene是apache下的一个开源的全文检索引擎工具包. 它为软件开发人员提供一个简单易用的工具包(类库),以方便的在目标系统中实现全文检索的功能. 2.能干什 ...

随机推荐

  1. Object转Integer,String

    object先转为字符串,然后通过int 的封装类(Integer)的pasreInt()方法转为int 例如: Object  ob = 123; Integer.parseInt(String.v ...

  2. 变量和基本类型——复合类型,const限定符,处理类型

    一.复合类型 复合类型是指基于其他类型定义的类型.C++语言有几种复合类型,包括引用和指针. 1.引用 引用并非对象,它只是为一个已存在的对象所起的另外一个名字. 除了以下2种情况,其他所有引用的类型 ...

  3. shell IF分支判断语句

    单分支IF条件语句 if [ 条件判断式 ] then  程序: fi //结束的时候if反过来写 fi ----------------------------- /** * if test -d ...

  4. NOIP2018复赛获奖分数线及名额分配办法

    中国计算机学会CCF NOI科学委员会.竞赛委员会召开会议,确定了CCF NOIP2018复赛获奖分数线及获奖名额分配方案. 提高组一等奖名额分配方案 提高组一等奖全国基准分数线: 245分 CCF ...

  5. day25-python操作redis一

    1.     Python操作nosql数据库 NoSQL,泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2 ...

  6. [AtCoder2558]Many Moves

    Problem 共有n个格子,有两个硬币在a,b格子上,还有q个操作. 每个操作给你一个编号,要求将一个硬币移到这个编号上. 问你硬币移动的总距离最小值. Solution O(n^3):DP[i][ ...

  7. 将一个xml文件解析到一个list中

    public List<News> getListFromXml(InputStream in) { XmlPullParser parser = Xml.newPullParser(); ...

  8. JavaScrip(一)JavaScrip的写法

    一:如何写JavaScript 1.直接写入 <scricp type="text/javascricp >*********</scricp> 直接写到标签里面. ...

  9. css文件 如何使背景图片大小适应div的大小

    对背景图片设置属性:background-size:cover;可以实现背景图片适应div的大小. background-size有3个属性: auto:当使用该属性的时候,背景图片将保持100% 的 ...

  10. 5.5 C++重载赋值操作符

    参考:http://www.weixueyuan.net/view/6383.html 总结: 重载赋值操作符同重载类的是拷贝构造函数的原因是一样,将一个对象拷贝给另一个对象,同时当类中存在指针类型的 ...