1.分析器 所有分析器最终继承的类都是Analyzer
1.1 默认标准分析器:StandardAnalyzer
在我们创建索引的时候,我们使用到了IndexWriterConfig对象,在我们创建索引的过程当中,会经历分析文档的步骤,就是分词的步骤,默认采用的标准分析器自动分词

1.2 查看分析器的分析效果

public static void main(String[] args) throws IOException {
//1.创建一个Analyzer对象
Analyzer analyzer=new StandardAnalyzer();
//2.调用Analyzer对象的tokenStream方法获取TokenStream对象,此对象包含了所有的分词结果
TokenStream tokenStream = analyzer.tokenStream("", "The spring Framework provides a comprehensive programming and configuration model.");
//3.给tokenStream对象设置一个指针,指针在哪当前就在哪一个分词上
CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);
//4.调用tokenStream对象的reset方法,重置指针,不调用会报错
tokenStream.reset();
//5.利用while循环,拿到分词列表的结果 incrementToken方法返回值如果为false代表读取完毕 true代表没有读取完毕
while (tokenStream.incrementToken()){
System.out.println(charTermAttribute.toString());
}
//6.关闭
tokenStream.close();

}

默认标准分析器分析英文没有问题,但是他是怎么样分析中文的?

1.2 中文分析器
第三方中文分析器:IKAnalyzer
IKAnalyzer的使用步骤:
1.导入依赖
<!-- https://mvnrepository.com/artifact/com.jianggujin/IKAnalyzer-lucene -->
<dependency>
<groupId>com.jianggujin</groupId>
<artifactId>IKAnalyzer-lucene</artifactId>
<version>8.0.0</version>
</dependency>
2.配置IKAnalyzer,导入配置文件
hotword.dic 扩展词典,可以将时尚的网络名词放入到该词典当中,这样就能根据扩展词典进行分词
stopword.dic 停用词词典,可以将无意义的词和敏感词汇放入到该词典当中,这样在分析的时候就会忽略这些内容

在自定义扩展词典和停用词词典的过程当中,千万不要使用windows记事本编辑,因为windows记事本是UTF-8+BOM编码

3.使用IKAnalyzer进行分词
public static void main(String[] args) throws IOException {
//1.创建一个Analyzer对象
Analyzer analyzer=new IKAnalyzer();
//2.调用Analyzer对象的tokenStream方法获取TokenStream对象,此对象包含了所有的分词结果
TokenStream tokenStream = analyzer.tokenStream("", "五道口课工场安装mysql-5.7.22-winx64后数据库服务启动报错:本地计算机上的mysql服务启动停止后,某些服务未由其他服务或程序使用时将自动停止而且mysql官网下载的压缩包解压出来没有网线上安装教... 博文 来自: 测试菜鸟在路上,呵呵");
//3.给tokenStream对象设置一个指针,指针在哪当前就在哪一个分词上
CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);
//4.调用tokenStream对象的reset方法,重置指针,不调用会报错
tokenStream.reset();
//5.利用while循环,拿到分词列表的结果 incrementToken方法返回值如果为false代表读取完毕 true代表没有读取完毕
while (tokenStream.incrementToken()){
System.out.println(charTermAttribute.toString());
}
//6.关闭
tokenStream.close();

}
4.程序当中使用IKAnalyzer
IndexWriter indexWriter=new IndexWriter(directory,new IndexWriterConfig(new IKAnalyzer()));

最新文章

  1. Entity Framework 6 Recipes 2nd Edition(10-6)译 -&gt; TPT继承模型中使用存储过程
  2. visual studio code更新
  3. 用C#语言在Visual Studio 2010里开发一个自定义的PowerShell Cmdlet
  4. DDD的思考
  5. JavaIDL开发CORBA实例演示
  6. 【Java Saves!】Session 5:计算机器之三--二指禅
  7. 边工作边刷题:70天一遍leetcode: day 79
  8. 网易实习笔试真题C/C++
  9. ServletContext对象
  10. CAS 单点登录,通过ticket 获取登录用户
  11. 自己使用Jquery封装各种功能分享
  12. WordPress NextGEN Gallery ‘upload.php’任意文件上传漏洞
  13. 一个用 C 语言写的迷你版 2048 游戏,仅仅有 500个字符
  14. 【转】Android Web Server
  15. 【 c语言中无符号和有符号的加法运算】【深入理解】--【sky原创】
  16. Canvas实现3D效果-可旋转的立方体
  17. iOS 网络编程模式总结
  18. .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  19. 【zookeeper】4、利用zookeeper,借助观察模式,判断服务器的上下线
  20. ELK部署与使用总结

热门文章

  1. 最大/最小de K个数/第K个数
  2. mysql5.7导出数据提示--secure-file-priv选项问题的解决方法
  3. bootstrap中响应式表格失灵
  4. 【代码总结】Struts2 Action接受参数方式的对比
  5. 概率dp poj2096
  6. Text Infilling解读
  7. React的React.createRef()/forwardRef()源码解析(三)
  8. vue简单计数器
  9. jquery 相同ID 绑定事件
  10. 使用JDBC完成分类表CRUD的操作