转载:http://www.kankanews.com/ICkengine/archives/4944.shtml
这里面要注意一下,IK本身有一个文件叫IKAnalyzer.cfg.xml
这个文件可以自己配置词典,词典有两种分别是ext_dict及ext_stopwords,其中ext_dict主要定义了一些关键字,这些关键字不会被分词分开,ext_stopwords主要配置停止词,什么是停止词呢?比如“的”,“得”,“我”这些没有具体意义但是又出现特别多的词就不应该作为关键字词出现,所以在分词的时候要把这些词过滤掉
首先Dictionary类会加载所有词典,成map结果,以isEnd()标志结束词。
要分词的字符串进行预处理,比如大小写转换,比如转码等等。
输入字符串以char的形式进行匹配,一个char如果能取到hitList,那么会锁定hitList,
循环到第二个char,如果能在hitList里与上一个char匹配成词(前面加载字典成map结构就用上了),则保存当前的newLexeme,并加入到输出结果集。判断是否isEnd(),如果是,则context.currCursor偏移1位,继续取词。
以此类推,直到遍历完这个字符串。
如果要分的词是中文,楼主可以主要研究CJKSegmenter(如果没记错的话是这样拼的)。
主要方法在nextLexeme里。
逻辑不复杂,debug跟一下就清晰了。