Sam,请问 Google 布尔逻辑运算中的 与、或、非 有运算顺序吗?像 C 语言中,非就是进行优先"与"运算的。
其实,关于这个问题我一直想说,今天正好借这个机会来和大家交流一下。
是的,C 语言是逻辑非优先运算,但谷歌不是。Googl e 里面没有像 C 语言中的优先级。
比如,a b OR c d
在逻辑上会被按照这样的逻辑执行:a AND (b OR c) AND d
而不是按照这样的逻辑执行:(a AND b) OR (c AND d)
再比如,a OR b c OR d
在逻辑上会被这样理解:(a OR b) AND (c OR d)
而不是这样理解:a OR (b AND c) OR d
所以,事实上,谷歌不支持 OR 能把它左右两边作为整体做逻辑非,OR 仅仅只能作用到左边和右边最近的一个关键词(除非双引号精确匹配)。
谷歌实际也不支持我们像上面这样用圆括号来分组,所以我们这里也仅仅是这样表示方便理解而已。
我们可以设想更复杂的布尔表达式,我们可能希望通过 Google 运行这些表达式。但如果谷歌能支持某个程序语言的逻辑程序,那么显然越复杂的搜索表达式,谷歌要耗费的服务器时间和运算就越多。而且有这种需求的搜索用户毕竟很少,顶多构成 Google 数十亿次搜索中的极小部分。很显然,99%的搜索用户只会进行一些简单的操作。
考虑到谷歌的搜索量无比巨大,所以它只做一些基础逻辑支持的做法我认为也是可以理解的,毕竟它要让绝大部分用户觉得搜索尽可能快地呈现结果。
最后,a OR "b c" d 应该怎样理解?
(a OR ("b c")) AND d