【问题标题】:Is search in database is always accurate?数据库中的搜索总是准确的吗?
【发布时间】:2015-01-16 13:30:05
【问题描述】:

在数据库中搜索是否总是准确的?

来自我们的 IR 课程考试:数据库管理和信息检索系统有什么区别!

预期答案:数据库是结构化数据,准确度为 100%。 IR 是非结构化的,并不总是准确的。

【问题讨论】:

  • 相当假的问题(我的意思是,考试问题,不是你的问题,虽然也没有真正的方法来回答那个问题)。

标签: database algorithm search information-retrieval


【解决方案1】:

首先,让我回答你的问题:

在数据库中搜索是否总是准确的?

没有。一个很好的例子是bloom filters。布隆过滤器代表集合,你可以对它们进行如下操作1

  • add - 添加一个元素
  • isInSet - 检查给定元素是否在集合中。

问题是,布隆过滤器是概率数据结构。他们有误报(你问那里有一个元素吗?答案应该是“否”,但算法产生“是”的概率很小)

布隆过滤器是结构化的,并不总是返回正确的答案,在某些情况下,人们可能会选择在它们上实现一个数据库。

也就是说,我认为问题的意图是询问关系数据库,例如 SQL。在 SQL 中——你确切地知道你要搜索什么,并且数据是在表中结构化的,可以搜索这些表以获得准确的答案——它是否包含某个字段——或者不?这样的数据库通常是为您始终可以正确回答的特定任务而设计的,并且您可以通过一种非常特定的方式将数据插入数据库。另一方面,免费搜索没有这种奢侈。任何人都可以按照自己的意愿以文档的形式插入数据,而您的系统必须对其进行处理,包括来自不同作者的所有噪音。这导致启发式解决方案有时会导致错误。


(1) 布隆过滤器的扩展也允许删除(计算布隆过滤器),并且在布隆过滤器中添加联合来合并两个集合非常简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-26
    • 2013-07-21
    • 1970-01-01
    • 2017-05-16
    • 2019-04-28
    • 2019-05-28
    • 1970-01-01
    • 2011-05-14
    相关资源
    最近更新 更多