小议lucene搜索表达式中的AND和OR以及+和空格

在构造搜索表达式的时候你可以使用+(与AND相当,当不完全相同) 和空格(与OR相当),也可以使用AND和OR,
当然也可以都混在一起,个人感觉最好不要

构造复杂的表达式的时候千万要注意,特别是使用AND OR的时候,搜索引擎解析表达式的时候并非按照常规的
先AND后OR
比如
tag:a AND tag:b OR title:a AND title:b 初看下来以为这个表达式与下面的等价
(tag:a AND tag:b ) OR (title:a AND title:b)
其实不是 tag:a AND tag:b OR title:a AND title:b 与+tag:a +tag:b + title:a +title:b等价,也就是与下面的表达式等价:
tag:a AND tag:b AND title:a AND title:b,所以你必须得加上括号

我倾向使用+和空格的组合,至少看上去更简单
上面的例子表示成(+tag:a +tag:b )( +title:a +title:b)

请注意+tag:a +tag:b和tag:a +tag:b的区别:
tag:a +tag:b其实与tag:b或者+tag:b等价,你可以认为+是必须有的意思,没有+就是可有可无的意思,
所以通常一个独立的+没什么意思,多个+同时出现就和AND意义相当了

另外: a AND b OR c 也并不是你想的那个意思,a AND b OR c===> +a +b c====> a AND b

为了达到效果你不得不写成( a AND b) OR c


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值