`
cleaneyes
  • 浏览: 337221 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Lucene分析器的實現

阅读更多
 public abstract class Analyzer {
    public abstract TokenStream tokenStream(String fieldName, Reader reader);
   *
   * @param fieldName Field name being indexed.
   * @return position increment gap, added to the next token emitted from {@link #tokenStream(String,Reader)}
   */
  public int getPositionIncrementGap(String fieldName)
  {
    return 0;
  }
}
String content = "...";
StringReader reader = new StringReader(content);

Analyzer analyzer = new ....();
TokenStream ts = analyzer.tokenStream("",reader);
//開始分詞
Token t = null;
while ((t = ts.next()) != null){
      System.out.println(t.termText());
}

 

分析器由兩部分組成。一部分是分詞器,被稱Tokenizer, 另一部分是過濾器,TokenFilter. 它們都繼承自TokenStream。一個分析器往由一個分詞器和多個過濾器組成。

public abstract class Tokenizer extends TokenStream {
  /** The text source for this Tokenizer. */
  protected Reader input;

  /** Construct a tokenizer with null input. */
  protected Tokenizer() {}

  /** Construct a token stream processing the given input. */
  protected Tokenizer(Reader input) {
    this.input = input;
  }

  /** By default, closes the input Reader. */
  public void close() throws IOException {
    input.close();
  }
}

 

public abstract class TokenFilter extends TokenStream {
  /** The source of tokens for this filter. */
  protected TokenStream input;

  /** Construct a token stream filtering the given input. */
  protected TokenFilter(TokenStream input) {
    this.input = input;
  }

  /** Close the input TokenStream. */
  public void close() throws IOException {
    input.close();
  }

}

 

StandardAnalyer的tokenStream方法,除了使用StatandTokenizer進行分詞外,還使用了3個Filtter:

  • StandardFilter  標準過濾器,主要對切分出來的省略語(如He's的's),和以"."號分隔的縮略語進行處理。
  • LowerCaseFilter 大小寫轉換器,將大寫轉為小寫
  • StopFilter 忽略詞過濾器,構造其實例時,需傳入一個忽略詞集合。

 

 public TokenStream tokenStream(String fieldName, Reader reader) {
    TokenStream result = new StandardTokenizer(reader);
    result = new StandardFilter(result);
    result = new LowerCaseFilter(result);
    result = new StopFilter(result, stopSet);
    return result;
  }

 
stopSet在構造StandardAnalyer時指定,無構造參加時,使用默認的StopAnalyzer.ENGLISH_STOP_WORDS提供的過濾詞。

  

5
0
分享到:
评论

相关推荐

    Lucene分析仪常见

    Lucene即全文检索。做全文检索功能时,可能要用到的最新jar包,希望对你们有用。

    lucene相关jar+查询分析器jar

    lucene相关jar+查询分析器jar,具体使用可参见资源,类似于map查询吧

    java lucene 实现分词和词干抽取

    用java实现的,利用了lucene里面的standardAnalyzer分析器实现的分词,可以去停用词,再利用波特算法实现 词干提取 最后排序 和词频统计输出

    lucene学习

    Lucene的基础知识 ...6、分析器的分析过程 a) 测试分析器的分词效果 b) 第三方中文分析器 7、索引库的维护 a) 添加文档 b) 删除文档 c) 修改文档 Lucene的高级查询、solr入门 solr在项目中的应用及电商搜索实现

    lucene5.5做同义词分析器

    根据lucene最新版本5.5做同义词分析器,熟悉内部分析构造

    基于Lucene的搜索引擎的实现

    完整代码,基于Lucene的分词,根据搜索引擎的目标和基本内容,将实现功能模块主要划分为创建中文分析器(创建索引)、读取索引文件查询记录、根据输入的内容进行分词、根据关键字进行全文检索、将结果按JSON格式输出...

    Lucene索引数据分析器

    Lucene生成的数据以表格的形式展示出来.希望对大家有用,方便大家的开发

    Lucene 3.0 原理与代码分析

    本系列文章将详细描述几乎最新版本的Lucene的基本原理和代码分析。 其中总体架构和索引文件格式是Lucene 2.9的,索引过程分析是Lucene 3.0的。 鉴于索引文件格式没有太大变化,因而原文没有更新,原理和架构的文章中...

    Lucene.Net 中文文本分析器

    A Chinese Analyzer that utilizes HMM. 基于隐马尔科夫模型的中文分析器。

    中文分词及其在基于Lucene的全文检索中的应用

    本文构造出一种适应中英文信息处理的Lucene语言分析器,该分析器的核心模块——分词器所使用的分词算法是一种基于词典的中文分词算法,该算法具体实现上采用了基于词前缀哈希技术来进行逐字匹配,采用基于规则统计...

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

    此版本是基于IK-Analyzer-2012FF修改而来,专门适用于Lucene 5.2.1。 IK Analyzer 是一个开源的,基于java语言...在2012版本中,IK实现了简单的分词歧义排除算法,标志着IK分词器从单纯的词典分词向模拟语义分词衍化。

    Java_IK分析插件将Lucene IK分析器集成到Elasticsearch和OpenSearch中,支持自定义字.zip

    Java_IK分析插件将Lucene IK分析器集成到Elasticsearch和OpenSearch中,支持自定义字

    jieba-lucene-analiysis:jieba的lucene中文分析器和令牌生成器

    捷巴-lucene分析 jieba使用的lucene中文分析器和Tokenizer( )。

    lucene搜索引擎【代码以及jar包】

     (4)设计了独立于语言和文件格式的文本分析接口,索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。  (5)已经默认实现了一套强大的查询引擎,用户无需自己...

    用于Lucene的IKAnalyzer分词器

    IKAnalyzer是一个开源的,基于Java语言开发的轻量级的中文分词语言包,它是以Lucene为应用主体,结合词典分词和文法分析算法的中文词组组件。从3.0版本开始,IK发展为面向java的公用分词组件,独立Lucene项目,同时...

    Lucene3.教程.ppt(学习的ppt)

    Java全文检索器 Lucene3.6教程 搜索引擎介绍 Lucene介绍、结构分析 Lucene的全文索引实现 Lucene原理分析、优化 中文分词器使用 高亮器的使用 过滤与排序 常见的各种搜索 如果需要源码的,请到我的资源去找,谢谢

    Lucene 3.6 学习笔记

    (1) 分析需求,创建接口 49 (2) 创建过滤器,继承Filter 50 (3) 实现接口,效果演示 52 第六章 LUCENE扩展 54 6.1 Luke 54 (1) 启动Luke 54 (2) 索引概述页面 55 (3) 查看索引信息 56 (4) 查询索引信息 57 6.2 Tika ...

    lucene3.6.1

    lucene core contrib包。core是lucene的核心包、contrib中有关键词高亮、各种语言分析器等辅助工具包

    Lucene介绍,全文检索

    Hacking Lucene:简化的查询分析器,删除的实现,定制的排序,应用接口的扩展 从Lucene我们还可以学到什么 另外,如果是在选择全文引擎,现在也许是试试Sphinx的时候了:相比Lucene速度更快,有中文分词的支持,而且...

    lucene3.4 jar

    lucene3.4最新JAR包,包括核心包,分析器,查询器,利用此包可以实现LUCENE基本功能

Global site tag (gtag.js) - Google Analytics