什么是“基于谓词的搜索”?

时间:2010-06-21 12:59:37

标签: language-agnostic search

我在咖啡桌谈话中无意中听到这一点,我无法理解这是什么。一些谷歌搜索没有引起任何有用的东西......

澄清:感谢大家最初采取的行动......但似乎谈话是通过数据库/互联网等进行“搜索”......

4 个答案:

答案 0 :(得分:9)

通常,谓词是一个接受一个或多个参数的函数,并返回一个布尔值,指示有关参数的某些语句是真还是假。

自然语言谓词的例子可能是“蓝色”,“长度超过两米”,“由MC Hammer拥有”,“在地下”。

在某些系统上执行搜索时 - 例如文件系统,数据库表,图形 - 可能是系统本身提供了某些内置搜索(文件系统可能有内置的文件名搜索;图形可能具有距离给定节点的距离的内置搜索);或者,为了更加灵活,可以通过提供自定义谓词函数来进行搜索。

根据细节,此自定义谓词函数可以作为表达式树或指向某些实际可执行代码的指针或要解析的查询表达式传递。所需要的只是系统有一些方法来调用每个候选项的谓词;并且谓词对每个候选项返回true或false。

搜索结果恰好是自定义谓词返回true的项目。

答案 1 :(得分:1)

如果他们在谈论.NET,那么他们指的是许多扩展集合方法所需的Predicate类型。

它是一个委托,它表示定义一组条件的方法,并确定指定的对象是否符合这些条件。

我不确定其他平台是否使用此术语。

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

答案 2 :(得分:1)

我不知道整个术语是否具有任何特定含义,但从更广泛的意义上说,“谓词”是一个将实体(即某种候选对象)作为输入的函数,并返回一个布尔值表明是否符合谓词条件。

从此扩展,可以得出结论,基于谓词的搜索是基于谓词搜索的搜索 - 可以称为过滤器的搜索。例如,您可以通过对两个简单谓词进行AND运算来构建搜索,例如IsUppercaseStringStringStartsWith("S") *来搜索以S开头的大写字符串。

  • 请注意,这是伪代码而不是任何特定的语法,因为我保持这种与语言无关的

答案 3 :(得分:1)

在广泛分布的数据库的cqse中,遍布各处的分片,传统的搜索模式使用索引等分解。对于这些数据库,通常执行map-reduce操作。映射由分片和您传递的谓词隐含地确定,该谓词将与谓词匹配的记录映射到结果所需的内容。在减少步骤中,完成了必要的聚合等。

也许这符合咖啡桌讨论的背景?