Token: 如果一个字段被token化,这表示它经过了一个可将内容转化为tokens串的分析程序。 Token是建立索引的基本单位,表示每个被编入索引的字符。 在token化的过程中,分析程序会在使用任何转换逻辑(例如去掉 "a” 或 "the" 这类停用词,执行词干搜寻,将无大小写区分的所有文字转换成小写等)的同时,抽取应被编入索引的文本内容。由于和字段相关的内容减少到只剩核心元素,因此,索引作为与某个字段相关的文字内容,它的规模也被缩小了。只有被token化的字段也将被编入索引的情况下才有意义。 对Akamai.com来说,“标题”被token化,所以Lucene不用搜寻如 "a" 或 "the" 这类单词。
- public final class Token {
- String termText;
- int startOffset;
- int endOffset;
- String type = "word";
-
- private int positionIncrement = 1;
-
- public Token(String text, int start, int end)
-
- public Token(String text, int start, int end, String typ)
-
- public void setPositionIncrement(int positionIncrement)
-
- public int getPositionIncrement() { return positionIncrement; }
-
- public final String termText() { return termText; }
-
- public final int startOffset() { return startOffset; }
-
- public void setStartOffset(int givenStartOffset)
-
- public final int endOffset() { return endOffset; }
-
- public void setEndOffset(int givenEndOffset)
-
- public final String type() { return type; }
-
- public String toString()
-
- }
TokenStream是用来走访Token的iterator(迭代器)
- public abstract class TokenStream {
- public abstract Token next() throws IOException;
- public void close() throws IOException {}
- }
Tokenizer继承自TokenStream,其输入为Reader
- public abstract class Tokenizer extends TokenStream {
- protected Reader input;
- protected Tokenizer() {}
- protected Tokenizer(Reader input) {
- this.input = input;
- }
-
- public void close() throws IOException {
- input.close();
- }
- }
TokenFilter继承自TokenStream,其作用是用来完成对TokenStream的过滤操作,譬如
去StopWords,将Token变为小写等。
- public abstract class TokenFilter extends TokenStream {
- protected TokenStream input;
- protected TokenFilter() {}
- protected TokenFilter(TokenStream input) {
- this.input = input;
- }
-
- public void close() throws IOException {
- input.close();
- }
- }
Analyzer就是一个TokenStream工厂
- public abstract class Analyzer {
- public TokenStream tokenStream(String fieldName, Reader reader){
- return tokenStream(reader);
- }
-
- public TokenStream tokenStream(Reader reader){
- return tokenStream(null, reader);
- }
- }
Analyzer的作用就是把文本分解为便于Lucene处理的token,好比人体的肠道,负责把食物分解成易于吸收的小块。
转自:http://ybzshizds.iteye.com/blog/562794
分享到:
相关推荐
使用lucene-3.5和IKAnalyzer2012,实现基础的全文检索实现
solr的IK分词器JAR及配置文件 jar包和配置文件的放置位置不一样,详情可搜索 IK Analyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包。...org.wltea.analyzer.lucene.IKAnalyzer jar
lucene3.5 IKAnalyzer3.2.5 实例中文分词通过,目前在网上找的lucene 和IKAnalyzer 的最新版本测试通过。内含:示例代码,以及最新jar包。 lucene lucene3.5 IKAnalyzer IKAnalyzer3.2.5 jar 中文 分词
IndexWriter indexWriter = new IndexWriter(indexDir, luceneAnalyzer,true); for (int i = 0; i (); i++) { LuceneVO vo = (LuceneVO)list.get(i); Document doc = new Document(); Field FieldId = ...
提示:IKAnalyzer中文分词器支持Lucene6.0以上,IKAnalyzer中文分词器支持Lucene6.0以上。
此版本是基于IK-Analyzer-2012FF修改而来,专门适用于Lucene 5.2.1。 IK Analyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本。最初,它...
lucene3.0.0jar包、IKAnalyzer分词器jar包及IKAnayzer中文分词器使用手册
Lucene4.7+IK Analyzer中文分词入门教程
来自牛人修改的IKAnalyzer,https://github.com/sea-boat/IKAnalyzer-Mirror,亲测Lucene7.2可用
Lucene5.21+IkAnalyzer2012_V5入门案例,看不懂你来打我。
Lucene IK Analyzer 3.0 Lucene的IK Analyzer 3.0 中文分词器 Lucene IK Analyzer 3.0 Lucene的IK Analyzer 3.0 中文分词器Lucene IK Analyzer 3.0 Lucene的IK Analyzer 3.0 中文分词器
由于林良益先生在2012之后未对IKAnalyzer进行更新,后续lucene分词接口发生变化,导致不可使用,所以此jar包支持lucene6.0以上版本
lucene 所有jar包 包含IKAnalyzer分词器
解决lucene4.0与IKAnalyzer的冲突。解决Exception in thread "main" java.lang.VerifyError...原因IKAnalyzer中参考手册中的例子是使用的lucene3.4,与4.0已经是不兼容了。本资源包含了IKAnalyzer2012_FF_hf1.jar及源码
支持lucene5的 IKAnalyzer中文分词器 IKAnalyzer5.jar
IKAanalyzer2.0.2源代码 博文链接:https://linliangyi2007.iteye.com/blog/165287
该jar包之前只支持Lucene4.7.2,因为我自己的项目用到的是Lucene5.3.1,所以我自己重写了IKAnalyzer.java以及IKTokenizer.java,并且重新编译之后替换了之前的.class文件,现在可以适用于Lucene5.3.1
Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能。 IKAnalyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包最初,它是以开源项目 Lucene为应用主体的...
这个是lucene5和IKAnalyzer5的jar包 相匹配,导入到lib可以使用,本人从网上下载测试可以使用的jar包