2010-06-21 69 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