Lucene中用词典分词,如果分不出,是不是就搜不到?


在lucene中使用字典对中文分词,例如“提出新问题”

运用词典可以将“提出新问题”分成:“提出”,“出新”,“问题”,“新问题”

但怎样分成“提出”,“出新”,“问题”,“新问题”,“提”,“出”,“新”,“问”,“题”

谢谢大家

问题解决了

正如@gaosboy所说的那样,要做的是如下几步:

1. 新建一个java文件,继承ISegmenter的接口,譬如叫SingleCharSegmenter
2. 参照CJKSegmenter的书写方法,主要修改public void analyze(AnalyzeContext context)这个方法
3. SingleCharSegmenter中analyze方法利用CJKSegmenter中已经写好的

// 首字成词
// 输出当前的词
Lexeme newLexeme = new Lexeme(context.getBufferOffset(),
context.getCursor(), 1, Lexeme.TYPE_CNWORD);
context.addLexeme(newLexeme);

4. 在IKSegmenter中loadSegmenters方法中,申明segmenters.add(new SingleCharSegmenter());就可以了

lucene 搜索引擎

living 10 years, 9 months ago

把整句分成:提 出 新 问 题 提出 新 问题 新问题,用相同的分词器,搜索新问题的时候是:新 问 题
可以试试IKAnalyzer,加一个简单的单字切分的子分词器
实现IK的ISegmenter接口,修改Configuration中的loadSegmenter方法,同时使用IKAnalyzer(false)方式构造分词器。
如果还有什么问题,可以继续讨论 :-D

和春哥打过平手 answered 10 years, 9 months ago

Your Answer