Lucene分词器之庖丁解牛

留意:这儿配置环境变量要重新启动体系后收效

我如今测验用的Lucene版本是lucene-2.4.0,它现已可以支撑中文号码大全分词,但它是关键词挖掘工具选用一元分词(逐字拆分)的方法,即把每一个汉字当作是一个词,这样会使树立的索引非常巨大,会影响查询功率.所以大多运用lucene的兄弟,都会思考使用其它的中文分词包,这儿我就介绍最为常用的"厨子解牛"分词包,当然它也是一个值得引荐的中文分词包.

这篇文章首要解说Lucene怎么结合"厨子解牛"分词包,在结合前,仍是先经过一个实例演示一下Lucene自带的中文分词器的分词作用.

package gzu.lyq.luceneAnalyzer;

import java.io.StringReader;

import org.apache.lucene.analysis.Analyzer;

import org.apache.lucene.analysis.Token;

import org.apache.lucene.analysis.TokenStream;

import org.apache.lucene.analysis.standard.StandardAnalyzer;

//测验Lucene自带的中文分词器

public class LuceneAnalyzer {

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

//StandardAnalyzer: 一元分词

Analyzer analyzer = new StandardAnalyzer();

String  indexStr = "我的QQ号码是58472399";

StringReader reader = new StringReader(indexStr);

TokenStream ts = analyzer.tokenStream(indexStr, reader);

Token t = ts.next();

while (t != null) {

System.out.print(t.termText()+"  ");

t = ts.next();

}

}

}

分词成果:我  的  qq  号  码  是  234456

经过上面的比如就会发现,Lucene自带分词器是将中文逐字拆分的,这是最为初始的分词方法,如今大都不选用.

下面进入主题,来解说Lucene和"厨子解牛"中文分词包的结合.

"厨子解牛"的下载地址是[url]http://code.google.com/p/paoding/downloads/list[/url],下载好后解压,我解压在E:\paoding2_0_4,进入该目录,首要将paoding-analysis.jar拷贝到项目的WEB-INF/lib目录;接着需求设置环境变量PAODING_DIC_HOME,变量名:PAODING_DIC_HOME 变量值:E:\paoding2_0_4\dic 第三步将E:\paoding2_0_4\src目录下的paoding-dic-home.properties特点文件拷贝到项目的src目录下,增加一行paoding.dic.home=E:/paoding2_0_4/dic 好了,到这儿,现已完成了Lucene和"厨子解牛"的结合,下面写个比如来测验一下.

package gzu.lyq.luceneAnalyzer;

import java.io.StringReader;

import org.apache.lucene.analysis.Analyzer;

import org.apache.lucene.analysis.Token;

import org.apache.lucene.analysis.TokenStream;  *

@param url = "http://www.shoudashou.com","plus");

* @param url = "http://www.fanselang.com","plus");

* @param url = "http://www.3h5.cn","plus");

* @param url = "http://www.4lunwen.cn","plus");

* @param url = "http://www.zx1234.cn","plus");

* @param url = "http://www.penbar.cn","plus");

* @param url = "http://www.lunjin.net","plus");

* @param url = "http://www.ssstyle.cn","plus");

* @param url = "http://www.91fish.cn","plus");

import net.paoding.analysis.analyzer.PaodingAnalyzer;

//测验"厨子解牛"中文分词器的分词作用

public class PaodingAnalyzer {

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

Analyzer analyzer = new PaodingAnalyzer();

String  indexStr = "我的QQ号码是3453245";

StringReader reader = new StringReader(indexStr);

TokenStream ts = analyzer.tokenStream(indexStr, reader);

Token t = ts.next();

while (t != null) {

System.out.print(t.termText()+"  ");

t = ts.next();

}

}

}

分词成果:我的  qq  号码  3453245

如果把indexStr换成是"中中国公民共和国万岁" ,那么分词成果为:

中华  中国人  公民  共和  共和国  万岁

留意:用厨子分词器的时分,首要参加的包途径中不能有中文,似乎中文不认,要参加common-logging.jar包,要不然会提示找不到类。

Lucene分词器之庖丁解牛,布布扣,bubuko.com

时间: 2024-10-15 12:03:52

Lucene分词器之庖丁解牛的相关文章

lucene 分词器

分词器 作用:切分关键词的. 在什么地方使用到了:在建立索引和搜索时. 原文:An IndexWriter creates and maintains an index. 1,切分: An IndexWriter creates and maintains an index . 2,去除停用词 IndexWriter creates maintains index 3,转为小写 indexwriter creates maintains index 1 package cn.itcast.e_a

Lucene分词原理与方式

-------------------------------------------------------- lucene的分词_分词器的原理讲解 -------------------------------------------------------- 几个默认分词 SimpleAnalyzer StopAnalyzer WhitespaceAnalyzer(根据空格分词) StandardAnalyzer 分词流程 Reader  ---->Tokenizer---->大量的To

lucene分词流程

这一个星期花时间好好学习了一下lucene/solr,今天好好总结一下,写点文章记录点重要的东西,以便日后不至于丈二和尚摸不着头脑, 这一篇文章主要是简单的介绍一下lucene分词过程中的分词流程,和一些简单原理的讲解,希望不妥这处读者能够指正,不胜感激!! (一)主要分词器 WhitespaceAnalyzer.StopAnalyzer.SimpleAnalyzer.KeywordAnalyzer,他们都的父类都是Analazer,在Analazer类中有一个抽象方法叫做tokenStream

lucene分词器中的Analyzer,TokenStream, Tokenizer, TokenFilter

分词器的核心类: Analyzer:分词器 TokenStream: 分词器做好处理之后得到的一个流.这个流中存储了分词的各种信息,可以通过TokenStream有效的获取到分词单元. 以下是把文件流转换成分词流(TokenStream)的过程 首先,通过Tokenizer来进行分词,不同分词器有着不同的Tokenzier,Tokenzier分完词后,通过TokenFilter对已经分好词的数据进行过滤,比如停止词.过滤完之后,把所有的数据组合成一个TokenStream:以下这图就是把一个re

爬虫系统Lucene分词

思路:查询数据库中信息,查询出id和name把那么进行分词存入文件 package com.open1111.index; import java.io.IOException;import java.nio.file.Paths;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet; import org.apache.log4j.Logger;import org.apac

Lucene分词器

Lucene分析器的基类为Analyzer,Analyzer包含两个核心组件:Tokenizer和 TokenFilter.自定义分析器必须实现Analyzer类的抽象方法createComponents(String)来定义TokenStreamComponents.在调用方法tokenStream(String, Reader)的时候,TokenStreamComponents会被重复使用. 自定义分析器首先需要继承Analyzer类,代码如下: public class HAnalyzer

Lucene分词报错:”TokenStream contract violation: close() call missing”

Lucene使用IKAnalyzer分词时报错:”TokenStream contract violation: close() call missing”  解决办法是每次完成后必须调用关闭方法. 如果报错:java.lang.illegalstateexception: tokenstream contract violation: reset()/close() call missing,则要在tokenStream.incrementToken(),原因是lucene从4.6.0开始to

自定义Lucene分词器示例

集团的内部通讯工具搜同事时,需要根据姓名后缀进行搜索.譬如"徐欢春",我们要能根据"欢春"搜出这个人:"黄继刚",要根据"继刚"为关键字搜出"黄继刚".这是个很人性化的用户体验,当我们有同事的名字是三个字的时候,我们通常会叫他们名字的最后两个字.Lucene本身并没有提供这种分词器,只能自己照着Lucene已有的分词器进行模仿开发. 参照ngram分词器进行开发. 实现一个Tokenizer和一个工厂类就可

实验二-3 Hadoop&Paoding 中文词频统计

  参考教程 在Hadoop上使用庖丁解牛(较复杂,并未采用,可以之后试试) http://zhaolinjnu.blog.sohu.com/264905210.html Lucene3.3.Lucene3.4中文分词——庖丁解牛分词实例(屈:注意版本) http://www.360doc.com/content/13/0217/13/11619026_266124504.shtml 庖丁分词在hadoop上运行时的配置问题(采纳了一半,没有按照其所写配置dic属性文件) http://f.da