`
linliangyi2007
  • 浏览: 1003561 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

关于Lucene3.0.1 QueryParser的一个错误

阅读更多
表达式1:
引用

id:"1231231" && title :"MYNAMEmonkey" && content:"你好吗"  && ur:"sdfsdfs""

四个条件的AND计算,在QueryParser解析为:
引用

+id:1231231 +title:mynamemonkey +content:"你 好 吗" +ur:sdfsdfs

这个逻辑应该是正确的

表达式2:
引用

id:"1231231" && title :"MYNAMEmonkey" || content:"你好吗"  && ur:"sdfsdfs""

中间的运算符改为|| OR计算,在QueryParser也被解析为:
引用

+id:1231231 +title:mynamemonkey +content:"你 好 吗" +ur:sdfsdfs

这个逻辑就不对了

大家也试试看,这应该是个bug吧。
分享到:
评论
8 楼 huangzhir 2013-01-30  
AND 跟 OR 混用应该加个(),这样就不会有问题!
id:"1231231" && (title :"MYNAMEmonkey" || content:"你好吗" )&& ur:"sdfsdfs""
结果
+id:1231231 +(title:mynamemonkey content:"你 好 吗") +ur:sdfsdfs
7 楼 skyuck 2013-01-11  
比如我搜 "你好吗"  用引号括起来的哦,被解析成下面这样的

+content:"你 好 吗"

这个中间有空格  怎么匹配到包含有"你好吗"的文档
6 楼 linliangyi2007 2010-06-29  
zbmartin 写道
zbmartin 写道
我今天测试了一下,是使用 StandardAnalyzer,
结果如下:
文件内容为 "id:"1231231" && title :"MYNAMEmonkey" && content:"你好吗"  && ur:"sdfsdfs"

没有你说的那个+号


对比了两种情况的分析结果了吗,与和或的。

另外你用的是啥版本的Lucene QueryParser,为啥会没有+号哩?
5 楼 zbmartin 2010-06-29  
zbmartin 写道
我今天测试了一下,是使用 StandardAnalyzer,
结果如下:
文件内容为 "id:"1231231" && title :"MYNAMEmonkey" && content:"你好吗"  && ur:"sdfsdfs"

没有你说的那个+号
4 楼 zbmartin 2010-06-29  
我今天测试了一下,是使用 StandardAnalyzer,
结果如下:
文件内容为 "id:"1231231" && title :"MYNAMEmonkey" && content:"你好吗"  && ur:"sdfsdfs"
3 楼 linliangyi2007 2010-05-24  
qyhdt 写道
应该加括号区别 而且或运算不应该加+号 注意运算优先级


兄弟你看清楚帖子上说的问题没啊,有+号的那个表达式是QueryParse的输出结果啊,所以我才说QueryParser有问题啊
2 楼 qyhdt 2010-05-24  
应该加括号区别 而且或运算不应该加+号 注意运算优先级
1 楼 linliangyi2007 2010-05-21  
补充一下,使用的Analyzer是StandardAnalyzer

相关推荐

Global site tag (gtag.js) - Google Analytics