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_analyzer;
 2
 3 import java.io.StringReader;
 4
 5 import org.apache.lucene.analysis.Analyzer;
 6 import org.apache.lucene.analysis.TokenStream;
 7 import org.apache.lucene.analysis.cjk.CJKAnalyzer;
 8 import org.apache.lucene.analysis.cn.ChineseAnalyzer;
 9 import org.apache.lucene.analysis.standard.StandardAnalyzer;
10 import org.apache.lucene.analysis.tokenattributes.TermAttribute;
11 import org.apache.lucene.util.Version;
12 import org.junit.Test;
13 import org.wltea.analyzer.lucene.IKAnalyzer;
14
15 public class TestAnalyzer {
16
17     @Test
18     public void test() throws Exception {
19         String enText = "An IndexWriter creates and maintains an index.";
20         Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
21         testAnalyzer(analyzer, enText);
22
23         String cnText = "传智播客准备Lucene的开发环境";
24         testAnalyzer(analyzer, cnText); // 单字分词
25
26         testAnalyzer(new ChineseAnalyzer(), cnText); // 单字分词
27         testAnalyzer(new CJKAnalyzer(Version.LUCENE_30), cnText); // 二分法分词
28         testAnalyzer(new IKAnalyzer(), cnText); // 词库分词(重点)
29     }
30
31     /**
32      * 使用指定的分词器对指定的文本进行分词,并打印出分出的词
33      *
34      * @param analyzer
35      * @param text
36      * @throws Exception
37      */
38     private void testAnalyzer(Analyzer analyzer, String text) throws Exception {
39         System.out.println("当前使用的分词器:" + analyzer.getClass().getSimpleName());
40         TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(text));
41         tokenStream.addAttribute(TermAttribute.class);
42         while (tokenStream.incrementToken()) {
43             TermAttribute termAttribute = tokenStream.getAttribute(TermAttribute.class);
44             //分词条件
45             System.out.println(termAttribute.term());
46         }
47         System.out.println();
48     }
49
50 }

lucene 分词器

时间: 2024-10-21 14:08:25

lucene 分词器的相关文章

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

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

自定义Lucene分词器示例

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

Lucene分词器

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

Lucene.net(4.8.0) 学习问题记录一:分词器Analyzer的构造和内部成员ReuseStategy

前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3.6.0 ,PanGu分词也是对应Lucene3.6.0版本的.不过好在Lucene.net 已经有了Core 2.0版本,4.8.0 bate版,而PanGu分词,目前有人正在做,貌似已经做完,只是还没有测试~,Lucene升级的改变我都会加粗表示. Lucene.net 4.8.0 https:

Lucene系列:(6)分词器

1.什么是分词器 采用一种算法,将中英文本中的字符拆分开来,形成词汇,以待用户输入关健字后搜索 2.为什么要分词器 因为用户输入的搜索的内容是一段文本中的一个关健字,和原始表中的内容有差别,但作为搜索引擎来讲,又得将相关的内容搜索出来,此时就得采用分词器来最大限度匹配原始表中的内容. 3.分词器工作流程 (1)按分词器拆分出词汇 (2)去除停用词和禁用词 (3)如果有英文,把英文字母转为小写,即搜索不分大小写 4.演示常用分词器测试 这里测试需要引入IKAnalyzer3.2.0Stable.j

重写lucene.net的分词器支持3.0.3.0版本

lucene.net中每个分词器都是一个类,同时有一个辅助类,这个辅助类完成分词的大部分逻辑.分词类以Analyzer结尾,辅助类通常以Tokenizer结尾.分类词全部继承自Analyzer类,辅助类通常也会继承某个类. 首先在Analysis文件夹下建立两个类,EasyAnalyzer和EasyTokenizer. 1 using Lucene.Net.Analysis; 2 using System.IO; 3 4 namespace LuceneNetTest 5 { 6 public

lucene内存索引库、分词器

内存索引库 特点 在内存中开辟一块空间,专门为索引库存放.这样有以下几个特征: 1)    因为索引库在内存中,所以访问速度更快. 2)    在程序退出时,索引库中的文件也相应的消失了. 3)    如果索引库比较大,必须得保证足够多的内存空间. 编码 在cn.hqu.directory 下新建:DirectoryTest /** * 1.能不能设置很多个索引库 *    可以设置很多个索引库 * 2.索引库能不能合并起来 *    如果是内存索引库 *      Directory ramD

lucene定义自己的分词器将其分成单个字符

问题描述:将一句话拆分成单个字符,并且去掉空格. package com.mylucene; import java.io.IOException; import java.io.Reader; import org.apache.lucene.analysis.Tokenizer; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; import org.apache.lucene.analysis.toke

Lucene.Net3.0.3+盘古分词器学习使用

一.Lucene.Net介绍 Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎.开发人员可以基于Lucene.net实现全文检索的功能. Lucene.net是Apache软件基金会赞助的开源项目,基于Apache License协议. Lucene.net并不是一个爬行搜索引擎,也不会自动地索引内容.我们得先将要索引的文档中的文本抽取出来,然后再将其加到Lucene.