Java Lucene(7):编写索引器之二
来源:互联网 发布:链轮计算软件 编辑:程序博客网 时间:2024/05/22 10:52
Java lucene 技术(7) : 编写索引器之二
程序6-2实现了基本的中文分词功能,可供读者参考:
public class MyselfChineseTokenizer {
protected Reader reader;
public MyselfChineseTokenizer(StringReader sr){
reader = sr;
}
private int length;
private int start;
private int offset = 0, bufferIndex=0, dataLen=0;
private final static int MAX_WORD_LEN = 255;
private final static int IO_BUFFER_SIZE = 1024;
private final char[] tokenBuffer = new char[MAX_WORD_LEN];
private final char[] sourceBuffer = new char[IO_BUFFER_SIZE];
public final MyselfToken next() throws IOException{
length = 0;
start = offset;
while(true){
final char ch;
offset++;
if(bufferIndex >= dataLen){
dataLen = reader.read(sourceBuffer);
bufferIndex = 0;
}
if(dataLen == -1){break;}
else{
ch = sourceBuffer[bufferIndex];
bufferIndex++;
}
tokenBuffer[length++] = Character.toLowerCase(ch);
return new MyselfToken(new String(tokenBuffer,0,length),start,start+length);
}
return null;
}
public MyselfToken[] getTokenArray() throws IOException{
ArrayList tokenList = new ArrayList();
while (true) {
MyselfToken token = next();
if (token == null) break;
tokenList.add(token);
}
return (MyselfToken[])tokenList.toArray(new MyselfToken[0]);
}
public static void main(String args[]) throws IOException{
StringReader sr = new StringReader("权利制约是美国大国崛起的软实力");
MyselfChineseTokenizer tokenizer = new MyselfChineseTokenizer(sr);
MyselfToken[] token = tokenizer.getTokenArray();
for(int i = 0; i<token.length;i++){
System.out.print(token[i].getTermText());
System.out.print(token[i].getStartOffset());
System.out.print(token[i].getEndOffset());
System.out.println("");
}
}
}
以下是打印结果:
权0--1
利1--2
制2--3
约3--4
是4--5
美5--6
国6--7
大7--8
国8--9
崛9--10
起10--11
的11--12
软12--13
实13--14
力14—15
可以发现,不仅实现了分词,而且每个词都已经被赋予了位置信息,看来,我们的第二步工作也已经完成了。
接下来,我们测试如下的文本信息:“权利制约是USA大国崛起的软实力”。测试结果如下:
权0--1
利1--2
制2--3
约3--4
是4--5
u5--6
s6--7
a7--8
大8--9
国9--10
崛10--11
起11--12
的12--13
软13--14
实14--15
力15—16
USA作为一个专门的英语词语,也被我们的分词器拆分了,这显然不是我们愿意得到,看来,还有需要改进的地方,下一章,就让我们一起对它的性能进行完善吧!
以上的论述介绍了最基本的分词器的编写,希望通过它,读者能够认识索引器工作原理,分词器原理以及lucene索引原理,欢迎您对我提出宝贵意见,欢迎您加我的QQ,MSN。
未完代续
- Java Lucene(7):编写索引器之二
- Java Lucene(6):编写索引器之一
- java之lucene索引
- lucene对文件建立索引之二
- Lucene学习笔记之(二)索引文档的CRUD
- Lucene初探之索引过程分析(二)
- Lucene&Solr(之二)-索引库CRUD、Solr的安装
- Lucene之删除索引
- Lucene之创建索引
- lucene 之创建索引
- lucene全文搜索之二:创建索引器(创建IKAnalyzer分词器和索引目录管理)基于lucene5.5.3
- Lucene学习总结(二) lucene索引文件格式
- Lucene的索引文件格式(二)
- lucene索引库优化二
- 全文索引 (二)lucene 索引管理
- Lucene入门之创建索引
- 搜索引擎lucene之文本文件索引
- lucene学习之创建索引
- 面向对象
- 修改客户预测提报数据
- 2007年第三季度正常客户星级
- 查询短信
- 营销平台虚拟数据添加
- Java Lucene(7):编写索引器之二
- CSS多级下拉菜单
- 自定义控件的学习日志(Pro.NET2.0 Windows Forms and Custom Controls)
- 关于百度IM的几个看法
- 基于Lucene/XML的站内全文检索解决方案:WebLucene
- JavaScript函数小集锦
- AWStats简介:Apache/IIS的日志分析工具
- Issue 111( Most important discoveries or creation are accidental; it is usually while seeking the answer to one question that
- API SDK MFC 的比较