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

发布于 2022-08-24 09:33:47 字数 647 浏览 10 评论 0

在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());就可以了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏日浅笑〃 2022-08-31 09:33:47

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

牛↙奶布丁 2022-08-31 09:33:47

你好 可不可以把完整的SingleCharSegmenter贴出来看看 我自己试了一次 不给力 呵呵

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文