一、展示分词内容

package com.wsy;import org.apache.lucene.analysis.*;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.util.Version;import java.io.IOException;
import java.io.StringReader;public class AnalyzerUtils {public static void displayToken(String string, Analyzer analyzer) {try {// 通过分词器获取TokenStreamTokenStream tokenStream = analyzer.tokenStream("content", new StringReader(string));// TokenStream是一种流,我们要获取流中的东西,就需要一个“碗”,我们将CharTermAttribute比作这个“碗”// 当TokenStream遍历的时候,这个“碗”也跟着走,我们把“碗”放到流中就是方便获取流中的数据CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);while (tokenStream.incrementToken()) {System.out.print("[" + charTermAttribute + "]");}System.out.println();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {Analyzer analyzer1 = new StandardAnalyzer(Version.LUCENE_35);Analyzer analyzer2 = new StopAnalyzer(Version.LUCENE_35);Analyzer analyzer3 = new SimpleAnalyzer(Version.LUCENE_35);Analyzer analyzer4 = new WhitespaceAnalyzer(Version.LUCENE_35);String string1 = "I am from liaocheng, it is my hometown. My name is Wang Shaoyang.My QQ number is 872452093.";String string2 = "我来自山东聊城,我的名字是王劭阳。";AnalyzerUtils.displayToken(string1, analyzer1);AnalyzerUtils.displayToken(string1, analyzer2);AnalyzerUtils.displayToken(string1, analyzer3);AnalyzerUtils.displayToken(string1, analyzer4);AnalyzerUtils.displayToken(string2, analyzer1);AnalyzerUtils.displayToken(string2, analyzer2);AnalyzerUtils.displayToken(string2, analyzer3);AnalyzerUtils.displayToken(string2, analyzer4);}
}

通过这个例子,可以看到对于一个字符串的分词结果,使用不同的分词器对于分词的效果是不同的,所以实际开发的时候,要根据需要使用合适的分词器才行。

二、总结

在displayToken()方法中,有一个非常重要的思想,就是向流中添加attribute,之后通过attribute来查看流中的内容,这在Lucene中非常重要,这里举了一个很形象的例子,把TokenStream比作水流,为了获取水流,我们需要向水流中放置一个碗,通过碗来获取到水流,也就获取到了数据,这一块一定要理解透。

Lucene笔记15-Lucene的分词-通过TokenStream显示分词相关推荐

  1. Lucene笔记16-Lucene的分词-通过TokenStream显示分词的详细信息

    一.通过TokenStream查看分词的详细信息 package com.wsy;import org.apache.lucene.analysis.*; import org.apache.luce ...

  2. Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息

    Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息 在此回复牛妞的关于程序中分词器的问题,其实可以直接很简单的在词库中配置就好了,Lucene中分词的所有信息我们都可以从 ...

  3. lucene 4.3 通过TokenStream显示分词代码演示

    核心代码: public class AnalyzerUtils {      /**      * 显示分词信息      * @param str      * @param a      * @ ...

  4. 13、学习Lucene3.5索引之通过TokenStream显示分词

    1.显示分词词汇 public static void displayToken(String str, Analyzer analyzer){try {/** * TokenStream token ...

  5. DotLucene源码浅读笔记(1) : Lucene.Net.Analysis

    本系列笔记将以DotLucene的命名空间组织行文,阅读的DotLucene版本是1.9.RC1,并且以更好的使用而非研究为目的阅读.也就是说要避难就易拉. 0), DotLucene主要命名空间概览 ...

  6. DotLucene源码浅读笔记(1) : Lucene.Net.Analysis 【转】

    本系列笔记将以DotLucene的命名空间组织行文,阅读的DotLucene版本是1.9.RC1,并且以更好的使用而非研究为目的阅读.也就是说要避难就易拉. 0), DotLucene主要命名空间概览 ...

  7. Lucene.Net 2.3.1开发介绍 —— 二、分词(一)

    原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(一) Lucene.Net中,分词是核心库之一,当然,也可以将它独立出来.目前Lucene.Net的分词库很不完善,实际应用价值不高.唯 ...

  8. java lucene 中文分词_Lucene的中文分词器IKAnalyzer

    分词器对英文的支持是非常好的. 一般分词经过的流程: 1)切分关键词 2)去除停用词 3)把英文单词转为小写 但是老外写的分词器对中文分词一般都是单字分词,分词的效果不好. 国人林良益写的IK Ana ...

  9. Lucene 4.6.1 java.lang.IllegalStateException: TokenStream contract violation

    这是旧代码在新版本Lucene中出现的异常,异常如下: Exception in thread "main" java.lang.IllegalStateException: To ...

最新文章

  1. Spring mvc Data Redis—Pub/Sub(附Web项目源码)
  2. 【iOS】图片缩放动画
  3. 系统通知,居然用拉取
  4. 计算机网络何顶新pdf,《计算机网络及应用(何顶新)(二版)》【摘要 书评 在线阅读】-苏宁易购图书...
  5. php简述一下并集交集差集,总结了一下js中的差集、交集、并集
  6. 强大的uml java_IDEA 还是强大啊,一键把项目生成 UML 类图…
  7. [连载]《C#通讯(串口和网络)框架的设计与实现》- 13.中英文版本切换设计
  8. dynmic_debug动态控制kernel下的日志输出
  9. 【安全-相关】kerberos hadoop Login failure for hadoop/localhost@YOUNG.COM from keytab
  10. JS--我发现,原来你是这样的JS(三)(基础概念--灵魂篇)
  11. spark-sql如何删除表_SparkSQL数据源之Hive数据库
  12. 在VBA中使用正则表达式
  13. 在中国在行其道的智慧城市,为何折戟多伦多? | 凌云时刻
  14. 重磅:GB/T 35273-2020《信息安全技术个人信息安全规范》最新解读
  15. 把树莓派用于YAAW离线下载的Mass Storage U盘用虚拟目录建到Vsftpd的子目录里去
  16. 无法定位序号344于动态链接库_无法定位序号 3873 于动态链接库存LIBEAY32.dll上
  17. L1-061 新胖子公式 (10 分)
  18. iOS AddressBook
  19. CLM陆面过程模式实践技术应用
  20. pymol怎么做底物口袋表面_pymol常用操作

热门文章

  1. 关于代理抓包,ssl pinning解决方案
  2. 下划线转驼峰excel
  3. 利用c51进行数模转换并在液晶屏上显示_基于C51单片机的智能计算器、矩阵键盘、lcd1602...
  4. 「LuoguP4752」牧 Divided Prime
  5. 【组合数学 dp[i][j] = a*dp[i, j-1] + b*dp[i-1,j]+c 求 dp[n][n]】Gym - 101480F Frightful Formula
  6. 文本文件的格式识别和读取
  7. python的包导入问题(一)from . import 的使用
  8. react axios配置代理(proxy),解决本地开发时的跨域问题
  9. 浅析安科瑞能耗监测云平台在公共建筑上的应用及未来发展趋势
  10. Mixly+点灯科技+小爱同学智能插座