论坛首页 Java版 企业应用

关于中文分词后Lucene搜索时有空格与没有空格情况下结果不一样的问题?

浏览 1095 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-03-22 关键字: lucene 中文分词 搜索
我现在用的中文分词是可以进行中文分词的,比如:软件图书,会分成<软件> <图书>两个词,但是在搜索时有以下问题:
当输入<软件图书>进行搜索,中间没有空格,结果为0,分词也分成了<软件 图书>了,但是生成的Lucene语句是这样的

IndexSearch:[263]:booleanQuery=+(title:"软件 图书")
IndexSearch:[191]:Can't find the result by AND, now begin search by OR. // 因为 AND 搜索不到,我再进行 OR 的搜索
IndexSearch:[263]:booleanQuery=+(title:"软件 图书")
IndexSearch:[203]:Hits...0

当输入<软件 图书>进行搜索,中间有空格,就有结果,分词也是分成了<软件 图书>了,但是生成的Lucene语句是这样的
IndexSearch:[263]:booleanQuery=+(+(title:软件) +(title:图书))
IndexSearch:[203]:Hits...26

是什么问题呢?
   
最后更新时间:2008-03-22
这个是短语查询的问题。QueryParser对连接在一起的词语认为是你要搜索“软件图书”连续在一起的doc(当然,如果对“的”做了noise处理的,短语查询也可以查出“软件的图书”的doc),但是不能检索出“软件大话图书”的doc。

这个是做中文分词及其组件很容易错误的地方。
   
0 请登录后投票
最后更新时间:2008-03-23
我的分词算法可以将
<软件图书>或<软件 图书>
切分成
<软件>和<图书>,

于是我希望在搜索时无论输入
<软件图书>或<软件 图书>
都可以搜索到
<软件>和<图书>
相关的doc

但是目前不能,为何?
   
0 请登录后投票
最后更新时间:2008-03-23
把“软件图书”的上下文句子给出来
以及分词算法对这个句子的分词按照分词顺序也给出来

这样才能诊断
   
0 请登录后投票
最后更新时间:2008-03-24
我也发现有这个问题,“软件图书”和“软件 图书”的分词都是软件和图书,但是搜索结果却是不一样。我的解决方法暂时是先用TokenStream把用户输入的关键词先切词,再放入QueryParser。
   
0 请登录后投票
最后更新时间:2008-03-26
概念的问题:
分词算法是用于将语句分词(包括转换、过滤、提取等操作);
查询语句表达式:用于实际的搜索过程;
QueryParser使用分析器的用途是对查询语句表达式进行分词操作(其实主要作用不是分词,而是转换或者过滤等操作,以便与检索过程一致)。

举例:
查询语句表达式为: "软件的图书  AND  工程的图书"
经过分析器后表达式变为:"软件 图书 AND 工程 图书"
   
0 请登录后投票
论坛首页 Java版 企业应用

跳转论坛:
JavaEye推荐