小议lucene搜索表达式中的AND和OR以及+和空格
来源:互联网 发布:2016cctv网络春晚 编辑:程序博客网 时间:2024/06/05 04:16
在构造搜索表达式的时候你可以使用+(与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
- VS2005下Windows Form 多线程问题
- 在Struts中reset方法有什么作用
- wince在CF卡上实现冷启动自动保存注册表(Windows CE5.0)
- .net 开源项目收集
- ASP.net防止用户后退、刷新造成重复提交的方法研究
- 小议lucene搜索表达式中的AND和OR以及+和空格
- BEA和IBM、微软等四公司共推Web服务新标准
- C/C++用移位实现乘除法运算,提高运行效率
- 关于批处理文件的基础知识
- 基于J2EE的电子商务开发模型及其实现
- 幸福是怎样练成的?
- Visual C++编程技巧之一
- IEEE 802标准和常用以太网电缆
- Effective C# 摘录(1) - C#Language Elements