`

Lucene04---分词器

    博客分类:
  • SEO
阅读更多

 

我们知道,Lucene所做的事情主要就两件,一是创建索引,一是搜索。那么这里就有一个很重要的东西就是分词器,分词器在http://xdwangiflytek.iteye.com/blog/1389308里就提到了,这里再说说,分词器,对文本资源进行切分,将文本按规则切分成一个个进行索引的最小单位(关键词)。建立索引和进行搜索时都要用到分词器,为了保证正确的搜索到结果,在建立索引与进行搜索时使用的分词器应为同一个。

       分词器,我们涉及到的是两种,一是英文的,一是中文的,英文的相对中文来说要简单点。

       直接上代码吧

 

 

AnalyzerDemo.java:

package com.iflytek.lucene;

import java.io.StringReader;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.cjk.CJKAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.util.Version;

/**
 * @author xudongwang 2012-2-4
 * 
 *         Email:xdwangiflytek@gmail.com
 */
public class AnalyzerDemo {

	public void analyze(Analyzer analyzer, String text) throws Exception {
		System.out.println("----------------------->分词器:" + analyzer.getClass());
		TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(text));

		CharTermAttribute termAtt = (CharTermAttribute) tokenStream.getAttribute(CharTermAttribute.class);
		// TypeAttribute typeAtt = (TypeAttribute) tokenStream
		// .getAttribute(TypeAttribute.class);

		while (tokenStream.incrementToken()) {

			System.out.println(termAtt.toString());

			// System.out.println(typeAtt.type());

		}
	}

	public static void main(String[] args) throws Exception {

		AnalyzerDemo demo = new AnalyzerDemo();
		System.out.println("---------------->测试英文");
		String enText = "Hello, my name is wang xudong, I in iteye blog address is xdwangiflytek.iteye.com";
		System.out.println(enText);
		System.out.println("By StandardAnalyzer 方式分词:");
		Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);
		demo.analyze(analyzer, enText);
		System.out.println("By SimpleAnalyzer 方式分词:");
		Analyzer analyzer2 = new SimpleAnalyzer(Version.LUCENE_35);
		demo.analyze(analyzer2, enText);
		System.out.println("通过上面的结果发现StandardAnalyzer分词器不会按.来区分的,而SimpleAnalyzer是按.来区分的");
		System.out.println();

		System.out.println("---------------->测试中文");
		String znText = "我叫王旭东";
		System.out.println(znText);
		System.out.println("By StandardAnalyzer 方式分词:");
		// 通过结果发现它是将每个字都作为一个关键字,这样的话效率肯定很低咯
		demo.analyze(analyzer, znText);
		System.out.println("By CJKAnalyzer 方式(二分法分词)分词:");
		Analyzer analyzer3 = new CJKAnalyzer(Version.LUCENE_35);
		demo.analyze(analyzer3, znText);

	}

}

 

 

 运行结果:

 

---------------->测试英文

Hello, my name is wang xudong, I in iteye blog address is xdwangiflytek.iteye.com

By StandardAnalyzer 方式分词:

----------------------->分词器:class org.apache.lucene.analysis.standard.StandardAnalyzer

hello

my

name

wang

xudong

i

iteye

blog

address

xdwangiflytek.iteye.com

By SimpleAnalyzer 方式分词:

----------------------->分词器:class org.apache.lucene.analysis.SimpleAnalyzer

hello

my

name

is

wang

xudong

i

in

iteye

blog

address

is

xdwangiflytek

iteye

com

通过上面的结果发现StandardAnalyzer分词器不会按.来区分的,而SimpleAnalyzer是按.来区分的

 

---------------->测试中文

我叫王旭东

By StandardAnalyzer 方式分词:

----------------------->分词器:class org.apache.lucene.analysis.standard.StandardAnalyzer

By CJKAnalyzer 方式(二分法分词)分词:

----------------------->分词器:class org.apache.lucene.analysis.cjk.CJKAnalyzer

我叫

叫王

王旭

旭东

 

上面讲的分词方式中对于中文来说最好的还是语义分词,就是中科院的那个。

 

后面对于具体中文分词器,我会在专门的专题中去说的,这里先简单了解一下.

 

1
0
分享到:
评论

相关推荐

    lucene-analyzers-smartcn-7.7.0-API文档-中文版.zip

    赠送jar包:lucene-analyzers-smartcn-7.7.0.jar; 赠送原API文档:lucene-analyzers-smartcn-7.7.0-javadoc.jar; 赠送源代码:lucene-analyzers-smartcn-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-...

    je-analysis-1.5.3、lucene-core-2.4.1分词组件

    在2.4.1这个版本中,Lucene已经包含了对中文分词的支持,可以与各种分词器如jieba、IK、HanLP等配合使用,实现更精准的中文搜索。Je-Analysis可以作为Lucene的分词插件,提供对中文文本的预处理服务,使得Lucene能更...

    lucene-core-2.9.4,lucene-core-3.0.2,lucene-core-3.0.3,lucene-core-3.4.0

    - **分词器升级**:此版本对分词器进行了增强,支持更多的语言和文本类型,提高了搜索的准确性和效率。 - **内存索引**:2.9.4引入了更高效的内存索引构建机制,对于快速原型开发和测试场景非常有用。 2. **...

    lucene-4.7.0全套jar包

    1. **分词与索引**:Lucene使用高效的分词器将文档内容分解成独立的词汇项(tokens),然后建立倒排索引。倒排索引是一种数据结构,它将每个词汇项映射到包含该词汇项的文档列表,极大地加速了搜索过程。 2. **搜索...

    拼音分词 Pinyin4j+pinyinAnalyzer+lucene-analyzers

    pinyinAnalyzer是Lucene的一个分析器,它利用了Pinyin4j的功能,能够将输入的中文文本分词并转化为拼音形式,以便于Lucene这样的全文搜索引擎进行索引和查询。而lucene-analyzers则是Lucene的一系列分析器集合,包含...

    lucene-core-2.3.0 lucene-core2.4.0以及极易分词器 jar包

    `je-analysis-1.5.1` 是该分词器的一个版本,它为Lucene提供了一套专门针对中文的分词规则和算法,能够有效地将中文文本切分成有意义的词语,这是构建中文搜索引擎时必不可少的步骤。极易分词器的特点可能是易于使用...

    MMAnalyzer 分词jar包(lucene-core-2.4.1.jar je-analysis-1.5.3.jar)

    这个分词器在Lucene的基础上,针对中文特性进行了优化,提高了分词效率和准确性,尤其适合对易读性和速度有较高要求的项目。 "lucene-core-2.4.1.jar"是Lucene的核心库,包含了Lucene的基本功能,如索引构建、查询...

    MMAnalyzer 分词必导入jar包(lucene-core-2.4.1.jar je-analysis-1.5.3.jar)

    `jeasy.analysis.MMAnalyzer`是JeasyAnalysis提供的一个分词器类,它实现了基于马尔科夫模型的分词算法,能够有效地对中文文本进行分词处理,生成合适的词语序列。 然而,使用MMAnalyzer时,仅引入`jeasy.analysis....

    lucene-core-3.0.2.jar,lucene-demos-3.0.2.jar

    Analyzer是处理文本的关键,它负责将文本分词,去除停用词等预处理工作。IndexWriter用于构建和更新索引,而Searcher则用于执行查询和返回结果。 接着,`lucene-demos-3.0.2.jar`则是Lucene的演示程序集合,它为...

    lucene-core-2.9.2.jar

    1. 模型与数据结构:Lucene的核心库主要包含以下组件:索引(Index)、文档(Document)、字段(Field)和分词器(Tokenizer)。索引是Lucene处理数据的主要方式,它将文本数据转化为便于搜索的结构。文档是信息的...

    Lucene-Demo.rar Lucene分词的demo

    `lucene`目录很可能包含了Lucene的库文件,这些文件包含了Lucene的核心组件,如索引和搜索模块,以及各种分词器。在Java项目中,开发者通常会将这些库文件作为依赖引入,以便使用Lucene提供的API进行文本处理。 `...

    lucene-analyzers-3.6.1.jar

    实现中文分词的lucene-analyzers-3.6.1.jar的jar 包

    Lucene分词器资源包

    **Lucene分词器资源包详解** Lucene是一款开源的全文搜索引擎库,广泛应用于Java开发中,用于构建高效、可扩展的信息检索应用。这个压缩包提供了Lucene分词时所必需的jar包,使得开发者能够方便地在项目中集成...

    lucene-core-2.4.0.jar

    2. 分析器(Analyzer):分析器负责将输入的文本进行预处理,如分词、去除停用词等。Lucene提供了多种内置分析器,如StandardAnalyzer,用户也可以自定义分析器以适应特定的语言环境。 3. 索引(Index):索引是...

    lucene je-analysis jar包

    Lucene包含了索引、搜索、分词、排序、高亮、相关性等功能,使得开发者能够快速构建复杂的搜索引擎。 Lucene的核心在于其索引机制。它将文本数据转化为倒排索引,这是一种优化的存储结构,允许快速查找包含特定词汇...

    Lucene-core-2.0.0.jar

    在2.0.0版中,Lucene对分词器(Analyzer)进行了改进,支持自定义分词规则,以适应不同语言和领域的搜索需求。分词器将文本分解为独立的搜索单元,是影响搜索准确性和效率的关键因素。 除了核心功能,Lucene还提供...

    lucene-analyzers-3.3.0 jar包和源码

    StandardAnalyzer是默认的Analyzer,它使用了Unicode字符集的分词器,能够处理多语言文本,并去除标点符号。SimpleAnalyzer则较为简单,它不分词,只对空格进行分隔。StopAnalyzer会去除常见的停用词,如“the”、...

    lucene-highlighter-3.6.1.jar

    实现中文分词的jar包:lucene-highlighter-3.6.1.jar

    lucene-highlighter-2.2.0-src.zip

    在Lucene中,高亮器(Highlighter)负责完成这项工作。它通过对原始文档内容进行分词,然后对比用户的查询语句,找出匹配的关键词,并对这些关键词进行特殊标记,如加粗、斜体等。 在源码中,我们可以看到`...

    Lucene-core-2.0.0

    它提供了高级的索引和搜索功能,支持分词、布尔运算、短语搜索、近似搜索等多种搜索模式。 2. **Lucene核心组件**: - **索引**: Lucene通过分析文档内容,将其转换成倒排索引,使得搜索效率极高。倒排索引是Lucene...

Global site tag (gtag.js) - Google Analytics