`

lucene中的Token, TokenStream, Tokenizer, Analyzer

阅读更多

转载:

Token: 如果一个字段被token化,这表示它经过了一个可将内容转化为tokens串的分析程序。 Token是建立索引的基本单位,表示每个被编入索引的字符。 在token化的过程中,分析程序会在使用任何转换逻辑(例如去掉 "a” 或 "the" 这类停用词,执行词干搜寻,将无大小写区分的所有文字转换成小写等)的同时,抽取应被编入索引的文本内容。由于和字段相关的内容减少到只剩核心元素,因此,索引作为与某个字段相关的文字内容,它的规模也被缩小了。只有被token化的字段也将被编入索引的情况下才有意义。 对Akamai.com来说,“标题”被token化,所以Lucene不用搜寻如 "a" 或 "the" 这类单词。

 
public final class Token {
  String termText;      // the text of the term
  int startOffset;      // start in source text
  int endOffset;        // end in source text
  String type = "word"; // lexical type

  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

Java代码 
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);
  }
}

 

分享到:
评论

相关推荐

    2018-01lucene-3.5和IKAnalyzer2012全文分词检索技术文档

    使用lucene-3.5和IKAnalyzer2012,实现基础的全文检索实现

    IKAnalyzer 支持高版本最新Lucene 5.x、6.x、7.x

    在给定的标题和描述中,我们看到IKAnalyzer已经更新以支持Lucene的高版本,包括5.x、6.x以及最新的7.3.1版本,这表明它持续跟进了Lucene的发展,确保与主流搜索引擎框架的兼容性。 1. **IKAnalyzer详解**: - IK...

    IKAnalyzer2012_FF_hf1.jar

    解决lucene4.0与IKAnalyzer的冲突。解决Exception in thread "main" java.lang.VerifyError...原因IKAnalyzer中参考手册中的例子是使用的lucene3.4,与4.0已经是不兼容了。本资源包含了IKAnalyzer2012_FF_hf1.jar及源码

    Lucene5.21+IkAnalyzer

    1. **环境配置**:确保你已经安装了Java运行环境,并将Lucene和IkAnalyzer的jar包添加到项目的类路径中。 2. **创建索引**:首先,你需要使用Lucene的API建立索引。使用Analyzer接口的实现,如IkAnalyzer,来处理...

    lucene5和IKAnalyzer5的jar包 相匹配

    然后,在Lucene的索引创建过程中,设置IKAnalyzer为默认的Analyzer,这样在建立索引时,文档中的中文内容就会被IKAnalyzer5正确地分词。在搜索阶段,同样使用IKAnalyzer5进行查询分析,确保查询关键词也能得到合理的...

    lucene3.5 IKAnalyzer3.2.5 实例中文分词通过

    lucene3.5 IKAnalyzer3.2.5 实例中文分词通过,目前在网上找的lucene 和IKAnalyzer 的最新版本测试通过。内含:示例代码,以及最新jar包。 lucene lucene3.5 IKAnalyzer IKAnalyzer3.2.5 jar 中文 分词

    模糊查询-lucene-IKAnalyzer

    通过阅读和理解这些代码,你可以了解到如何在实际项目中整合Lucene和IKAnalyzer,实现模糊查询的功能。 在开发过程中,确保正确地配置了Lucene和IKAnalyzer的依赖,并且理解它们的工作原理是非常关键的。对于模糊...

    Lucene4.7+IK Analyzer中文分词入门教程

    在这个入门教程中,我们将使用Lucene 4.7版本,结合IK Analyzer,一个专门针对中文分词的开源分析器,来学习如何构建一个简单的搜索引擎。 首先,你需要下载Lucene 4.7和IK Analyzer 2012-FF Hotfix 1。Lucene的...

    Apache Lucene全文检索和IKAnalyzer分词工具类

    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以上,IKAnalyzer中文分词器支持Lucene6.0以上。

    lucene3.0.0jar及IKAnalyzer

    使用 IKAnalyzer 时,需要将其配置到 Lucene 的分析器中,然后按照 Lucene 的索引和查询流程进行操作。具体步骤通常包括设置 Analyzer、创建 IndexWriter、添加文档、构建索引,以及创建 Searcher、构造 Query、执行...

    org.wltea.analyzer.lucene.IKAnalyzer jar

    solr的IK分词器JAR及配置文件 jar包和配置文件的放置位置不一样,详情可搜索 IK Analyzer 是一个开源的,基于java语言开发的轻量级的中文分词工具包。...org.wltea.analyzer.lucene.IKAnalyzer jar

    lucene 所有jar包 包含IKAnalyzer分词器

    《Lucene分词技术与IKAnalyzer详解》 在信息技术领域,搜索引擎是不可或缺的一部分,而Lucene作为Apache软件基金会的一个开放源代码项目,是Java语言开发的全文检索引擎库,为构建高效、可扩展的信息检索应用提供了...

    c# 中文分词 LUCENE IKAnalyzer

    标题中的"C# 中文分词 LUCENE IKAnalyzer"是指使用C#语言实现的一个中文分词工具,它基于开源全文检索引擎Lucene,并且采用了IKAnalyzer(智能汉字分词系统)的Java版本进行移植。Lucene是一个强大的、高性能的信息...

    中文分词库 IKAnalyzer For Lucene 5.2.1(适用Lucene 5.2.1)

    在实际应用中,开发者需要将 `\8878575_IKAnalyzer2012_V5.jar` 添加到项目的类路径中,然后按照 IKAnalyzer 提供的文档进行配置,就可以在 Lucene 中使用这个分词库进行中文文本的索引和搜索操作。同时,根据项目...

    ikanalyzer中文分词支持lucene7.1.0

    ikanalyzer中文分词支持lucene7.1.0是一个针对Lucene搜索引擎的中文分词扩展,由林良益先生开发,旨在提供高效、精准的中文词汇拆解功能。Lucene是一个开源全文检索库,它提供了索引和搜索文本的强大工具。然而,...

    IKAnalyzer 支持高版本Lucene 6.x及以上

    来自牛人修改的IKAnalyzer,https://github.com/sea-boat/IKAnalyzer-Mirror,亲测Lucene7.2可用

    IKAnalyzer中文分词支持lucene6.5.0版本

    由于林良益先生在2012之后未对IKAnalyzer进行更新,后续lucene分词接口发生变化,导致不可使用,所以此jar包支持lucene6.0以上版本

    lucene5.4 + IKAnalyzer

    **正文** 标题“lucene5.4 + IKAnalyzer”指的是将Apache Lucene 5.4版本与IK ...而提供的"lucene_newTest"文件可能是用于测试或示例的代码或数据,帮助用户了解如何在实际项目中集成和使用Lucene和IK Analyzer。

    lucene第一步---5.中文分词IKAnalyzer和高亮highlighter的使用

    中文分词IKAnalyzer和高亮highlighter的使用”指出,这个主题将探讨如何在Lucene中应用IKAnalyzer进行中文分词,以及如何使用高亮器(highlighter)来突出搜索结果中的关键词。Lucene是Apache软件基金会的一个开放源...

Global site tag (gtag.js) - Google Analytics