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

Lucene 分词解读(一)

 
阅读更多
Lucene中的中文分词

Lucene中处理中文的常用方法有三种。以"咬死猎人的狗"这句话的输出结果为例:

单字方式:[咬]  [死]  [猎]  [人]  [的]  [狗];
二元覆盖的方式:[咬死]  [死猎]  [猎人]  [人的]  [的狗];
分词的方式:[咬]  [死]  [猎人]  [的]  [狗]。

Lucene中负责语言处理的部分在org.apache.lucene.analysis包。其中TokenStream类用来进行基本的分词工作,Analyzer类是TokenStream的外围包装类,负责整个解析工作。有人把文本解析比喻成人体的消化过程,输入食物,分解出有用的氨基酸和葡萄糖等。Analyzer类接收的是整段文本,解析出有意义的词语。

通常不需要直接调用分词的处理类analysis,而是由Lucene内部来调用,其中:

在做索引阶段,调用addDocument(doc)时,Lucene内部使用Analyzer来处理每个需要索引的列,如图4-1所示。
  
引用
IndexWriter index = new IndexWriter(indexDirectory,  
                                    new CnAnalyzer(),
    //用支持分词的分析器 
                                    !incremental, 
                                    IndexWriter.
    MaxFieldLength.UNLIMITED); 


在搜索阶段,调用QueryParser.parse(queryText)来解析查询串时,QueryParser会调用Analyzer来拆分查询字符串,但是对于通配符等查询不会调用Analyzer。
引用
Analyzer analyzer = new CnAnalyzer();       //支持中文的分词 
QueryParser parser = new QueryParser
(Version.LUCENE_CURRENT,"title", 
   analyzer);


因为在索引和搜索阶段都调用了分词过程,索引和搜索的切分处理要尽量一致,所以分词效果改变后需要重建索引。另外,可以用个速度快的版本,用来在搜索阶段切分用户的查询词,另外用一个准确切分的慢速版本用在索引阶段的分词。

为了测试Lucene的切分效果,下面是直接调用Analysis的例子:
引用
    Analyzer analyzer = new CnAnalyzer(); //创建一个中文分析器 
    //取得Token流 
    TokenStream ts = analyzer.tokenStream("myfield",new StringReader 
    ("待切分文本")); 
    while (ts.incrementToken()) {//取得下一个词 
         System.out.println("token: "+ts)); 
    } 
分享到:
评论

相关推荐

    Lucene源码解读1

    【Lucene源码解读1】 Lucene是一款开源的全文搜索引擎库,由Apache软件基金会开发,广泛应用于各种信息检索系统。其强大的搜索功能和高效的性能深受开发者喜爱。在深入理解Lucene之前,我们需要先了解它的核心概念...

    Lucene介绍+源码解读+功能分析

    ### Lucene介绍与源码解读 #### 一、Lucene概述 Lucene是一个开放源代码的全文检索引擎工具包,由Doug Cutting所创立,并于2002年捐赠给了Apache基金会。Lucene并非一个完整的搜索引擎解决方案,而是一个提供全文...

    Lucene搜索-引擎开发权威经典pdf+源码第二部分

    这部分可能会讲解如何使用Lucene API来添加文档、分词、创建倒排索引以及优化索引过程。 2. **查询处理**:索引创建后,Lucene提供了一套强大的查询语言和解析机制。这部分可能涉及如何构造查询、解析查询字符串、...

    Lucene 原理与代码分析.pdf

    全文检索是现代互联网和大数据技术中极为重要的一个环节,它能帮助...从基本原理到具体的代码实现,对全文检索的整个流程进行了详尽的解读,使得读者能够充分理解Lucene的机制,并能利用它开发出高效的全文检索系统。

    lucene高亮显示

    `Analyzer`是Lucene中的核心组件之一,负责将文本分词并转换为TokenStream,用于索引和搜索。 2. **创建IndexSearcher:** `IndexSearcher`用于执行搜索操作。在构造函数中,通过`IndexReader.open()`打开指定目录...

    lucene基础学习笔记&源码

    **三、Lucene 源码解读** 源码分析对于深入理解 Lucene 内部工作原理至关重要。`lucene-3.5.0-src.tgz` 包含了 Lucene 3.5.0 版本的源代码,可以进行以下研究: 1. **分析索引流程**:查看 `org.apache.lucene....

    Lucene2.4完美样例+中文文档

    Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它为开发者提供了在 Java 应用程序中实现全文检索功能的强大工具。Lucene 2.4 版本是其历史上的一个重要版本,具有稳定性和效率的优势。本文将深入...

    lucene4.4使用手册.docx

    《Lucene 4.4 使用手册》详细解读 Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发。它提供了高效的全文检索功能,适用于各种应用场景,包括站内搜索、论坛、博客文章、商品搜索等。全文检索的核心在于...

    一个专业搜索公司关于lucene和solar资料

    - **标题**:“一个专业搜索公司关于Lucene和Solr资料” - 该标题表明这份资料是针对专业人士编写的,主要聚焦于Lucene和Solr这两款流行的信息检索系统。 #### 描述分析 - **描述**:“一个专业搜索公司关于Lucene...

    Lucene实战(第2版)

    #### 一、Lucene简介与应用价值 **Lucene**是一款高性能的全文搜索引擎库,由Doug Cutting创建,并贡献给了Apache基金会。它能够帮助开发者轻松地在应用程序中集成搜索功能,极大地提高了信息检索的速度与效率。 #...

    lucene in Action 中文版

    《Lucene in Action》中文版是关于Apache Lucene搜索引擎库的详细解读,它涵盖了Lucene的基本概念、核心功能以及实际应用。这本书的前四章深入浅出地介绍了Lucene的关键知识点,对于想要学习和理解Lucene的人来说是...

    Lucene 例子

    Lucene 是一个开源全文搜索引擎库,由 Apache 软件基金会开发。它提供了一个可扩展的、高性能的搜索框架,使得开发者能够快速地在大量数据中实现全文检索功能。Lucene 的核心功能包括文本分析、索引构建、查询解析和...

    Lucene 原理与代码分析完整版1

    《Lucene原理与代码分析完整版1》这篇文章深入探讨了全文检索的基本原理,以及Lucene这一强大搜索引擎的内部工作机制。全文检索是现代信息技术中的一个重要领域,它为海量数据的高效检索提供了可能。以下是对该文...

    [搜索链接]java(结合lucene)版的公交搜索系统_javaso.zip

    Java 结合 Lucene 的公交搜索系统是一个利用 Java 编程语言和 Apache Lucene 搜索引擎库来实现的高效、快速的公共交通查询应用。这个系统旨在帮助用户通过输入起点和终点,快速查找最优的公交路线。以下是对这个系统...

    Lucene In Action ch 5 笔记 --高级搜索技术

    以下是对这一章节内容的详细解读: 首先,章节可能涵盖了查询解析,这是将用户输入的自然语言查询转化为计算机可以理解的形式的关键步骤。Lucene提供了QueryParser类,用于将字符串查询转换为解析树,然后将其转化...

    ASP.NET基于Ajax+Lucene构建搜索引擎的设计和实现(源代码+论文).zip

    Lucene则是一个开源全文搜索引擎库,适用于在各种应用中实现高效、可扩展的搜索功能。 在这个项目中,“ASP.NET基于Ajax+Lucene构建搜索引擎的设计和实现”涵盖了以下几个核心知识点: 1. ASP.NET基础:ASP.NET...

    luke3.5源码

    Luke 3.5是一款强大的Lucene索引查看工具,它为开发者提供了直观、详尽的方式来浏览和分析Lucene创建的索引。在这个版本中,Luke提供了一种直观的方式,使我们能够理解Lucene如何存储和检索数据,对于学习和调试...

    elasticsearch.zip

    Elasticsearch 是一个基于 Lucene 的开源全文搜索引擎,它提供了一个分布式、多用户环境下的全文检索引擎。Elasticsearch 不仅是一个搜索引擎,还常被用于数据分析和实时日志监控,因为其强大的分布式特性和高可扩展...

    solr中文文档.pdf

    1. **Lucene原理**:Lucene是Apache软件基金会4 Jakarta项目中的一个子项目,是一个高性能、全功能的文本搜索引擎库。它不是一个完整的应用,而是一个Java开发包(library),提供对文本进行索引和搜索的能力。 2. *...

    1_elasticsearch技术解析与实战

    Elasticsearch是一款开源、分布式、实时的全文搜索和分析引擎,基于Lucene构建,广泛应用于日志分析、实时监控、数据搜索等多个领域。其核心特性包括强大的全文检索能力、分布式架构、自动分词、高可扩展性和实时性...

Global site tag (gtag.js) - Google Analytics