词库加载的源代码: /** * */ package org.wltea.analyzer.dic; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Collection; import java.util.List; import org.wltea.analyzer.cfg.Configuration; /** * IK Analyzer v3.2 * 词典管理类,单子模式 * @author 林良益 * */ public class Dictionary { /* * 分词器默认字典路径 */ public static final String PATH_DIC_MAIN = "/org/wltea/analyzer/dic/main.dic"; public static final String PATH_DIC_SURNAME = "/org/wltea/analyzer/dic/surname.dic"; public static final String PATH_DIC_QUANTIFIER = "/org/wltea/analyzer/dic/quantifier.dic"; public static final String PATH_DIC_SUFFIX = "/org/wltea/analyzer/dic/suffix.dic"; public static final String PATH_DIC_PREP = "/org/wltea/analyzer/dic/preposition.dic"; public static final String PATH_DIC_STOP = "/org/wltea/analyzer/dic/stopword.dic"; /* * 词典单子实例 */ private static final Dictionary singleton; /* * 词典初始化 */ static{ singleton = new Dictionary(); } /* * 主词典对象 */ private DictSegment _MainDict; /* * 姓氏词典 */ private DictSegment _SurnameDict; /* * 量词词典 */ private DictSegment _QuantifierDict; /* * 后缀词典 */ private DictSegment _SuffixDict; /* * 副词,介词词典 */ private DictSegment _PrepDict; /* * 停止词集合 */ private DictSegment _StopWords; private Dictionary(){ //初始化系统词典 loadMainDict(); loadSurnameDict(); loadQuantifierDict(); loadSuffixDict(); loadPrepDict(); loadStopWordDict(); } /** * 加载主词典及扩展词典 */ private void loadMainDict(){ //建立一个主词典实例 _MainDict = new DictSegment((char)0); //读取主词典文件 InputStream is = Dictionary.class.getResourceAsStream(Dictionary.PATH_DIC_MAIN); if(is == null){ throw new RuntimeException("Main Dictionary not found!!!"); } try { BufferedReader br = new BufferedReader(new InputStreamReader(is , "UTF-8"), 512); String theWord = null; do { theWord = br.readLine(); if (theWord != null && !"".equals(theWord.trim())) { _MainDict.fillSegment(theWord.trim().toCharArray()); } } while (theWord != null); } catch (IOException ioe) { System.err.println("Main Dictionary loading exception."); ioe.printStackTrace(); }finally{ try { if(is != null){ is.close(); is = null; } } catch (IOException e) { e.printStackTrace(); } } //加载扩展词典配置 List<String> extDictFiles = Configuration.getExtDictionarys(); if(extDictFiles != null){ for(String extDictName : extDictFiles){ //读取扩展词典文件 is = Dictionar