paip..禁用mmseg 的默认词库. . 仅仅使用自定义词库from数据库.
mmseg默认词库只能是文件格式...不好维护..要是不个词库放的个数据库里面走好维护兰..
要实现2个目标..:
1.禁用默认词库,仅仅使用自定义词库
2.词库从数据库读取,而不使用默认的文件方式,方便维护..
作者Attilax 艾龙, EMAIL:[email protected]
来源:attilax的专栏
地址:http://blog.csdn.net/attilax
Dictionary.getInstance("")来的禁用默认词库,无效果...
查看Dictionary.loadDic 源码...看来无法通过dic = Dictionary.getInstance("");的方式来禁用它的默认词库...
只好扩展Dictionary了..new 了一个class,继承了Dictionary,重写loadDic方法...change 孪一瓦方法的..visiablity...这个方法虽然能行,要overwrite一瓦方法了.麻烦.半路儿上放弃...
换个丝路,不个哪加载的词库在给他卸除孪走ok兰吗.haha...
dic = Dictionary.getInstance();
//delete default words
Map<Character, CharNode> dict=dic.getDict();
Set set=dict.keySet();
Iterator<Character> it = set.iterator();
while (it.hasNext()) {
Character key = it.next();
// String val=String.valueOf( dict.get(key));
CharNode cn=dict.get(key);
cn.ktWordTails=new KeyTree();
}
这样,走 禁用孪默认词库兰...完成孪1半儿兰..
词库从数据库读取到list,如何不个这个List动态加载到mmseg呢??
List<String> li=new ArrayList<String>();
li.add("上学好");
li.add("卖衣裳");
for(String word:li)
{
if(word.trim().length()==0 || word.length()<2)
continue;
String line=word;
CharNode cn = dict.get(line.charAt(0));
if(cn == null) {
cn = new CharNode();
dict.put(line.charAt(0), cn);
}else
cn.addWordTail(dic.tail(line));
}
扎实ok兰..哈