急懂得Ikanalyzer分词器的大神进来帮个忙
急!!了解Ikanalyzer分词器的大神进来帮个忙
鄙人想用IKananlyzer中的IKsegmenter的类和相关函数来获取word文档中我指定关键词的位置。但是打印的结果却没有产生我指定的分词。请帮忙看看,谢了!下面给出相关代码:
2、在后台打印出的结果如下:

3、ext.dic扩展词库文件中的内容如下:
1
2 合并资产负债表
------解决思路----------------------

鄙人想用IKananlyzer中的IKsegmenter的类和相关函数来获取word文档中我指定关键词的位置。但是打印的结果却没有产生我指定的分词。请帮忙看看,谢了!下面给出相关代码:
package com.it.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.StringReader;
import java.util.Date;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;
public class IkAnalyzer{
public static void main(String[] args) throws Exception {
//指明要索引文件夹的位置
File fileDir = new File("D:\\s");
File[] textFiles = fileDir.listFiles();
long startTime = new Date().getTime();
//增加document到索引去
for (int i = 0; i < textFiles.length; i++) {
if (textFiles[i].isFile()) {
System.out.println("File " + textFiles[i].getAbsolutePath()
+ "正在被索引....");
String temp =readWord(textFiles[i].getAbsolutePath());//读取word文本内容
// 创建分词对象
StringReader reader = new StringReader(temp);
IKSegmenter ik = new IKSegmenter(reader,true);// 当为true时,分词器进行最大词长切分
Lexeme lexeme = null;
try {
while((lexeme = ik.next())!=null)
//System.out.println(lexeme.getLexemeText()+"|");
if(lexeme.getLexemeText().equals("合并资产负债表")){
System.out.println(lexeme.toString());
System.err.println("搜索成功,所在位置:"+lexeme.getBeginPosition());
break;
}
} catch (IOException e) {
e.printStackTrace();
} finally{
reader.close();
}
}
}
//测试一下索引的时间
long endTime = new Date().getTime();
System.out.println("这占用了"
+ (endTime - startTime)
+ " 毫秒来把文档增加到索引里面去!"
+ fileDir.getPath());
}
public static String readWord(String filename) {
String content = "";
//StringBuffer content = new StringBuffer("");// 文档内容
try {
HWPFDocument doc = new HWPFDocument(new FileInputStream(filename));
WordExtractor we =new WordExtractor(doc);
content=we.getText();
// Range range = doc.getRange();
// int paragraphCount = range.numParagraphs();// 段落
// for (int i = 0; i < paragraphCount; i++) {// 遍历段落读取数据
// Paragraph pp = range.getParagraph(i);
// content.append(pp.text().trim());
// }
} catch (Exception e) {
e.printStackTrace();
}
return content.toString();
}
}
2、在后台打印出的结果如下:
3、ext.dic扩展词库文件中的内容如下:
1
2 合并资产负债表
------解决思路----------------------