巧用布尔运算,玩转电骡的搜索功能

翻译:jason_jiang

译自eMule官方文章

注意:本文主要讲电骡自带的搜索功能,也适用于其他搜索引擎!不要一看见科学名词就晕菜,看在我写这么多的份上,认真看完吧!

Boolean(布尔运算)通过对两个以上的物体进行并集、差集、交集的运算,从而得到新的物体形态。

布尔运算有三种:
与:双目运算(要两个参与运算的变量),当两个变量都为真(true)时结果为真
或:双目运算,当两个变量有一个为真时结果为真
非:单目运算,当变量为真是结果为假,变量为假时结果为真

在电骡的搜索框中可以输入多个关键字。如果你输入了多个关键字,那么只会搜到文件名中包含所有关键字的文件,也就是满足所有条件的文件。要实现更复杂的搜索,必须用布尔运算。

只要关键字中含有非拉丁字母(中文、日文、韩文、全角标点符号……),就一定要选中“使用Unicode搜索”。
(注:0.49c版后,eMule可帮用户自行选择编码,“使用Unicode搜索”选项取消,无需再手动选择。)

布尔运算符有三种:

> NOT(非)
实际上叫“与非”。它后面指定的关键字会被排除,也就是说搜出来的文件均不含它后面指定的关键字。属于最高优先级的运算。
举例:关键字1 NOT 关键字2,表示“包含关键字1,但不包含关键字2”

> AND(与)
如果没有写运算符,而直接用空格分开多个关键字的话,默认是AND。用AND连起来的一串关键字,只会搜到文件名中包含所有关键字的文件,也就是满足所有条件的文件。属于中级运算。
举例:关键字1 AND 关键字2 (等于:关键字1 关键字2)

> OR(或)
OR表示只需符合多个关键字中的至少一个。属于最低优先级的运算。
举例:关键字1 OR 关键字2

注意:
> 在Kad网络搜索时,第一关键字至少要有3个字。第一关键字后面不能有AND以外的运算符。
> 在使用“Web搜索”以外的方法搜索时,布尔运算条件和文件类型条件可以随意组合。
> 注意运算符的优先级。根据数学原理,由高到低依次是NOT -> AND -> OR。如果你要改变运算优先级,需要在算式两边加上半角小括号(懂小学数学就懂这个)。
> 如果你要把运算符或小括号当成关键字来搜索,可以使用半角引号。引号里的运算符或小括号没有数学意义,而会被当成普通的关键字。
> 用ORNOT连起来的一串关键字没有AND严格。AND搜索需要满足所有条件,ORNOT搜索只需要满足一部分条件
> ORNOT运算对文件元数据也有效,比如mp3的ID3信息。

举 例:
> 搜索: 关键字1 关键字2 OR 关键字3 关键字4
数学意义:(关键字1 AND 关键字2) OR (关键字3 AND 关键字4)
实际意义:既包含关键字1,也包含关键字2; 或者既包含关键字3,也包含关键字4

> 搜索: 关键字1 关键字2 OR 关键字3 关键字4 NOT 关键字5
数学意义:(关键字1 AND 关键字2) OR [(关键字3 AND 关键字4) NAND 关键字5]
实际意义:既包含关键字1,也包含关键字2; 或者既包含关键字3,也包含关键字4,但是符合3+4这一条件的文件还不能包含关键字5

> 搜索: 关键字1 关键字2 NOT 关键字5 OR 关键字3 关键字4 NOT 关键字5
数学意义:[(关键字1 AND 关键字2) NAND 关键字5] OR [(关键字3 AND 关键字4) NAND 关键字5]
实际意义:既包含关键字1,也包含关键字2; 或者既包含关键字3,也包含关键字4; 而且关键字5既不能出现在1+2条件里,也不能出现在3+4条件里

> 搜索: (关键字1 关键字2 OR 关键字3 关键字4) NOT 关键字5
数学意义:[(关键字1 AND 关键字2) OR (关键字3 关键字4)] NAND 关键字5
实际意义:跟上面完全一样。不同的是,由于用了括号,看起来更加直观。这种写法把“NOT 关键字5”直接作用于整个算式

> 搜索: (关键字1 “OR” 关键字2) NOT 关键字3
数学意义:(关键字1 AND or AND 关键字2) NAND 关键字3
实际意义:因为用引号引住了OROR不再是运算符,而是普通的关键字。这样搜到的文件既包含关键字1,也包含关键字2,也包含单词”or”,但不含关键字3

7条评论隐藏

  1. 2009年3月4日 周三 18:43 | 回复

    经典译文! 😀

  2. #2 aoke1989
    2010年12月27日 周一 17:14 | 回复

    技术贴

  3. #3 fiveblue
    2011年2月22日 周二 03:53 | 回复

    这个非常好,vc去链接后是该好好学习一下如何使用电骡自己的搜索功能了

  4. #4 xiaoaaaa
    2011年3月15日 周二 20:42 | 回复

    虽然很详细 我也很认真看了 但对于我这只小鸟很明白

  5. 2011年6月14日 周二 18:10 | 回复

    多亏咱是学电路的。写的很清楚,赞一个

  6. #6 Shakall
    2012年1月26日 周四 22:53 | 回复

    有一点我有疑问,如果优先级是NOT>AND>OR,那么第三个实例:
    > 搜索: 关键字1 关键字2 NOT 关键字5 OR 关键字3 关键字4 NOT 关键字5
    它的数学意义不就该是这样么:
    [关键字1 AND (关键字2 NAND 关键字5)] OR [关键字3 AND (关键字4 NAND 关键字5)]
    与作者所言矛盾啊。

  7. #7 JamesR_WP
    2012年1月27日 周五 03:07 | 回复

    @Shakall
    [关键字1 AND 关键字2 AND (NOT 关键字5)] OR [关键字3 AND 关键字4 AND (NOT 关键字5)]
    Not是单目运算符,而And和Or是双目运算符。
    例如 2 x (-3) = -6, “-” 单目运算符,”x”是双目运算符。

发表评论

您的Email将不会显示出来。头像请至Gravatar.com注册上传。*号标注项为必填。

*
*
*
标签用法
字数:0