2010-06-21 66 views
4

我在咖啡桌的談話中聽到了這一點,我無法理解這是怎麼回事。一點谷歌沒有投擲任何有用的東西...什麼是「基於謂詞的搜索」?

澄清:感謝球員的最初承擔......但它似乎是談話是關於「搜索」通過數據庫/互聯網等......

回答

1

與碎片到處都是廣泛分佈數據庫的cqse,採用傳統的搜索模式索引等發生故障。對於這些數據庫,通常會執行map-reduce操作。該映射由分片和您傳遞的謂詞隱式確定,該謂詞將匹配謂詞的記錄映射到結果所需的任何內容。在減少步驟中,完成必要的聚合等。

也許這符合咖啡桌討論的背景?

+0

嗨,彼得!這似乎是有道理的 - 有關於數據庫/搜索等的討論!感謝您的幫助 - 我現在感覺不到多少! ;) – Dave 2010-06-25 05:03:08

1

如果他們在談論.NET,那麼他們指的是許多擴展集合方法所需的Predicate類型。

它是代表一個定義一組標準,並且確定指定的對象是否滿足這些標準的方法的委託。

我不確定其他平臺是否使用此術語。

//selects items in list where the `ID` property matches `id` 
List.Select(x => x.ID == id); 
1

我不知道如果長期作爲一個整體有任何特殊的意義,但在更廣泛意義上的「上游」是一個函數,它的實體(即某種候選對象的)作爲輸入,並返回一個指示謂詞條件是否被滿足的布爾值。

從這一擴大,人們可能會得出這樣的結論基於謂詞的搜索是一個可搜索基於謂詞 - 人們可稱之爲一個過濾器。例如,你可以建立由取與搜索兩個簡單謂詞在一起,說IsUppercaseStringStringStartsWith("S") *搜索字符串的大寫字母與S.開始

  • 注意,這是僞不是因爲我保持這種任何特定的語法語言無關
9

一般來說,謂語是一個函數,一個或多個參數,並返回一個布爾值,指示有關參數的一些說法是真還是假。自然語言謂詞的

例子可能是「是藍色的」,「是兩米多長」,「在地下」,「由哈默擁有」。

在某些系統(如文件系統,數據庫表,圖表)上執行搜索時,系統本身可能會提供某些內置搜索(文件系統可能會根據文件名進行內置搜索;一個圖可能具有與給定節點距離的內置搜索);或者,爲了獲得更大的靈活性,可以通過提供自定義謂詞函數來進行搜索。

取決於細節,這一習俗謂功能可以作爲一個表達式樹,或指向一些實際的可執行代碼,還是要分析的查詢表達式通過。所有需要的是,系統有一些方法來調用每個候選項目的謂詞;並且謂詞對每個候選項目返回true或false。

搜索的結果則正好爲其定製的謂詞返回true的那些項目。

+0

非常感謝AakashM給出了詳細的答案 - 這是很有說服力的,但我不認爲它「適合」我想了解的內容......不過,再次感謝! – Dave 2010-06-25 05:04:19