Lucene笔记15-Lucene的分词-通过TokenStream显示分词
一、展示分词内容
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显示分词相关推荐
- Lucene笔记16-Lucene的分词-通过TokenStream显示分词的详细信息
一.通过TokenStream查看分词的详细信息 package com.wsy;import org.apache.lucene.analysis.*; import org.apache.luce ...
- Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息
Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息 在此回复牛妞的关于程序中分词器的问题,其实可以直接很简单的在词库中配置就好了,Lucene中分词的所有信息我们都可以从 ...
- lucene 4.3 通过TokenStream显示分词代码演示
核心代码: public class AnalyzerUtils { /** * 显示分词信息 * @param str * @param a * @ ...
- 13、学习Lucene3.5索引之通过TokenStream显示分词
1.显示分词词汇 public static void displayToken(String str, Analyzer analyzer){try {/** * TokenStream token ...
- DotLucene源码浅读笔记(1) : Lucene.Net.Analysis
本系列笔记将以DotLucene的命名空间组织行文,阅读的DotLucene版本是1.9.RC1,并且以更好的使用而非研究为目的阅读.也就是说要避难就易拉. 0), DotLucene主要命名空间概览 ...
- DotLucene源码浅读笔记(1) : Lucene.Net.Analysis 【转】
本系列笔记将以DotLucene的命名空间组织行文,阅读的DotLucene版本是1.9.RC1,并且以更好的使用而非研究为目的阅读.也就是说要避难就易拉. 0), DotLucene主要命名空间概览 ...
- Lucene.Net 2.3.1开发介绍 —— 二、分词(一)
原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(一) Lucene.Net中,分词是核心库之一,当然,也可以将它独立出来.目前Lucene.Net的分词库很不完善,实际应用价值不高.唯 ...
- java lucene 中文分词_Lucene的中文分词器IKAnalyzer
分词器对英文的支持是非常好的. 一般分词经过的流程: 1)切分关键词 2)去除停用词 3)把英文单词转为小写 但是老外写的分词器对中文分词一般都是单字分词,分词的效果不好. 国人林良益写的IK Ana ...
- Lucene 4.6.1 java.lang.IllegalStateException: TokenStream contract violation
这是旧代码在新版本Lucene中出现的异常,异常如下: Exception in thread "main" java.lang.IllegalStateException: To ...
最新文章
- Spring mvc Data Redis—Pub/Sub(附Web项目源码)
- 【iOS】图片缩放动画
- 系统通知,居然用拉取
- 计算机网络何顶新pdf,《计算机网络及应用(何顶新)(二版)》【摘要 书评 在线阅读】-苏宁易购图书...
- php简述一下并集交集差集,总结了一下js中的差集、交集、并集
- 强大的uml java_IDEA 还是强大啊,一键把项目生成 UML 类图…
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 13.中英文版本切换设计
- dynmic_debug动态控制kernel下的日志输出
- 【安全-相关】kerberos hadoop Login failure for hadoop/localhost@YOUNG.COM from keytab
- JS--我发现,原来你是这样的JS(三)(基础概念--灵魂篇)
- spark-sql如何删除表_SparkSQL数据源之Hive数据库
- 在VBA中使用正则表达式
- 在中国在行其道的智慧城市,为何折戟多伦多? | 凌云时刻
- 重磅:GB/T 35273-2020《信息安全技术个人信息安全规范》最新解读
- 把树莓派用于YAAW离线下载的Mass Storage U盘用虚拟目录建到Vsftpd的子目录里去
- 无法定位序号344于动态链接库_无法定位序号 3873 于动态链接库存LIBEAY32.dll上
- L1-061 新胖子公式 (10 分)
- iOS AddressBook
- CLM陆面过程模式实践技术应用
- pymol怎么做底物口袋表面_pymol常用操作
热门文章
- 关于代理抓包,ssl pinning解决方案
- 下划线转驼峰excel
- 利用c51进行数模转换并在液晶屏上显示_基于C51单片机的智能计算器、矩阵键盘、lcd1602...
- 「LuoguP4752」牧 Divided Prime
- 【组合数学 dp[i][j] = a*dp[i, j-1] + b*dp[i-1,j]+c 求 dp[n][n]】Gym - 101480F Frightful Formula
- 文本文件的格式识别和读取
- python的包导入问题(一)from . import 的使用
- react axios配置代理(proxy),解决本地开发时的跨域问题
- 浅析安科瑞能耗监测云平台在公共建筑上的应用及未来发展趋势
- Mixly+点灯科技+小爱同学智能插座