巧用布爾運算,玩轉電騾的搜索功能

翻譯: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