Apache Lucene拆词和搜索的问题,搜索搜不到相关的结果?求指教
整理一下问题,大概是这样:
假设一句话,被拆出了一堆词,如果不用这一些词的其中之一来搜,就搜索不到。
比如:"苹果笔记本 Macbook Pro",这个名称,被拆出了 苹果笔记本、macbook、pro三个词,那么我只能搜索这三个词才可以,我搜苹果或者笔记本都搜不出结果。
1.由于mmseg4j 的关系,选择了SimpleAnalyzer 分析器
2.字典中存在:苹果、笔记本、苹果笔记本
假设我在名称:"苹果笔记本 Macbook Pro" 上增加一个词『苹果』,变成"苹果苹果笔记本 Macbook Pro",那么拆词的时候就会增加一个『苹果』的词,那么我搜『苹果』,就可以搜索到。
这个问题不知道是不是bug,还是设计就如此。觉得很奇怪~~~~
个人认为,就算拆词了,也不能把模糊查询,这么基本的功能给去掉。请指教一下、谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
我想即能分词查询,也保留模糊查询,可以实现么? 用 MaxWord,虽然分词多了,但是不搜拆除的词还是查不出来
回复
你可以考虑先分词再去查询,不能分词的再用模糊查询,我们的部分业务就这么做的
回复
嗯, 这个好像不错。 可以考虑一下 谢谢。
建议索引分词的时候采用 max-word
方式
我想即能分词查询,也保留模糊查询,可以实现么? 换用 MaxWord,虽然分词多了,但是不搜拆除的词还是查不出来
回复
可以的。 我觉得你要看下lucene的基础知识再做东西。否则你这样遇到一个问题问一下问题是做不下去的。
回复
我就是想同时保留这两个功能。
你用的分词器可能有问题:SimpleAnalyzer。你换一个试一下。
同时,你也要注意:索引时和搜索时应该用的同一个分词器
嗯,我是想知道这个可以解决么?还是设计如此。 - - 至少要给客户一个合理的解释。。
把苹果笔记本这个词删掉就好了,你的分词单元分的有点大,一般用2个字为一个词拆分就可以具体看客户需求
在你的词库中,苹果和苹果笔记本都是基本的词汇,当时在建立索引的时候并没有建立关于苹果的索引,只有苹果笔记本的索引,所以你用苹果这个词是搜索不到苹果笔记本的