`
cleaneyes
  • 浏览: 343515 次
  • 性别: 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
分享到:
评论

相关推荐

    lucene3源码分析

    ### Lucene3源码分析知识点概述 #### 一、全文检索的基本原理 ##### 1. 总论 全文检索系统是一种高效的信息检索技术,能够帮助用户在海量文档中快速找到包含特定关键词的信息。Lucene是Java领域内最受欢迎的全文...

    lucene相关jar+查询分析器jar

    **正文** Lucene是一个强大的全文搜索引擎库,由Apache软件基金会开发并维护。...通过理解Lucene的工作原理,掌握查询分析器的使用,以及灵活地调整和优化,可以在各种项目中实现强大的搜索体验。

    Lucene分析仪常见

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

    LUCENE分析介绍功能

    总体来说,文章提出了一种融合潜在语义分析、贝叶斯分类和关联规则采掘的BBS文档鉴别方法,通过自然语言处理技术抽取典型短语,利用LSA减少同义词的影响,再通过关联规则采掘提高短语独立性,最后由贝叶斯分类器完成...

    Lucene索引器实例

    **Lucene索引器实例详解** Lucene是一个高性能、全文本搜索库,由Apache...在实际项目中,可以根据需求选择合适的存储(如硬盘目录或分布式存储)、优化分析器配置、处理大量文档的批量索引以及实现复杂的查询逻辑。

    C#调用Lucene方法-实现快速搜索

    我们需要定义一个Analyzer(分析器)来处理文本,如使用StandardAnalyzer进行英文分词。然后,使用Directory(目录)对象(如FSDirectory)指定存储索引的位置,最后使用IndexWriter创建索引。例如: ```csharp ...

    Lucene实现全文检索

    **标题:“Lucene实现全文检索”** 在信息技术领域,全文检索是一种从大量文本数据中查找相关信息的关键技术。Apache Lucene是Java开发的一款开源全文搜索引擎库,它为开发者提供了构建高效、可扩展的搜索功能的...

    Lucene中的FST算法描述

    为了高效地处理和检索存储的词项(term),Lucene使用了FST(有限状态转换器,Finite State Transducer)这一核心算法构建内存索引。FST算法不仅可以用于快速检索term信息存储的位置,而且还支持判断一个term是否...

    基于Lucene+webmagic实现的垂直搜索引擎

    分词是关键步骤,它将文本分解为可搜索的单元,通常由词汇分析器(Analyzer)完成,如标准分词器(StandardAnalyzer)。 WebMagic则扮演了数据获取的角色。它提供了配置简单、可扩展的网页抓取功能。我们可以定义...

    lucene实现企业产品检索

    - **模糊搜索**:支持部分匹配或同义词搜索,可以通过设置查询分析器的同义词扩展或使用模糊查询。 - **排序与评分**:根据相关性(如TF-IDF)对结果进行排序,可以自定义评分函数。 - **过滤与聚合**:通过Filter和...

    Lucene 原理与代码分析完整版.pdf

    《Lucene原理与代码分析》深入探讨了Lucene——一款高性能、全功能的文本搜索引擎库——的核心机制与实现细节。本书不仅提供了理论上的全面解析,还辅以丰富的代码实例,帮助读者从源码层面理解Lucene的工作流程。...

    Lucene.Net 中文文本分析器

    `Lucene.Net.Analysis.China.dll`这个库很可能包含了实现HMM中文分析器的类和方法,为开发者提供了开箱即用的中文分词功能。 `Lucene.Net.dll`是Lucene.Net的核心库,包含了搜索引擎的主要功能,如索引创建、查询...

    lucene5.5做同义词分析器

    本篇文章将深入探讨如何基于Lucene 5.5版本构建一个同义词分析器,以及它对理解Lucene内部分析构造的重要性。 首先,我们要明白同义词分析器在文本处理中的作用。在信息检索系统中,同义词分析器能够识别并处理具有...

    Lucene.Net实现全文搜索

    - **分词与分析**:内置多种分词器和分析器,用于处理不同语言和格式的文本。 **2.2 应用场景** - **文档管理**:对大量的文档进行索引,方便用户快速查找所需信息。 - **网站搜索**:为网站添加搜索功能,提高...

    lucene实现全文搜索

    通过创建IndexWriter实例,开发者可以指定索引目录、分析器以及其它设置。 以下是一个简单的Lucene索引创建示例: ```java Directory indexDir = FSDirectory.open(new File(INDEXDIR)); IndexWriter writer = new...

    Lucene 搜索方法(模糊搜索)

    源码分析方面,`FuzzyQuery`类在Lucene的`org.apache.lucene.search`包下,其内部实现了模糊匹配的逻辑。`defaultMinSimilarity`和`defaultPrefixLength`是预设的默认值,可以根据实际应用的需求进行调整。此外,`...

    Lucene.Net 实现全文检索

    - **分析器(Analyzer)**:Lucene.Net 使用分析器对输入的查询和索引字段进行分词,不同的分析器会有不同的分词规则。选择合适的分析器对于搜索性能和准确性至关重要。 - **性能优化**:考虑到效率,可以采用多线程...

    lucene 实现类似百度搜索

    - 初始化 Analyzer:选择适合的语言分析器,如中文使用 `SmartChineseAnalyzer`,处理不同语言的分词问题。 - 创建 Directory 对象:作为索引的存储位置,可以选择 RAMDirectory(内存)或 FSDirectory(磁盘)。 ...

    Lucene 原理与代码分析完整版

    本文将对Lucene的基本原理及其实现的代码进行分析。 首先,全文检索的基本原理包括索引的创建与搜索过程。在索引创建过程中,文档首先经过分词组件Tokenizer拆分成词元Token,然后经过语言处理组件...

    lucene 原理与代码分析

    《Lucene原理与代码分析》深入探讨了几乎最新版本的Lucene的工作机制和代码实现细节,为理解全文搜索引擎的核心技术提供了宝贵的资源。以下是对该文件关键知识点的详细解析: ### 全文检索的基本原理 #### 总论 ...

Global site tag (gtag.js) - Google Analytics