在非结构化数据源中,数据源选择主要是基于大文档和小文档的方法,重叠数据源的估计是通过比较样本文档集合之间的重叠估计真实的重叠。
在结构化数据源(Web数据库)中,可以构建数据库的摘要选择数据源:通过查询获取查询结果,获得属性值-频率的统计数据,建立直方图。但在深层网络(deep web)数据源中,无法直接获得属性值-频率的聚合估计值来建立直方图;同时,直方图数据无法用来估计数据源之间的重叠率。
基于抽样的重叠数据源选择工作主要是Stat Miner方法。Stat Miner假设数据源和查询的关联被转化为类(集合)层次;基于样本数据,可以学习出类间(而非数据源间)覆盖率和重叠率的统计数据,选择top-K数据源集合使得不同的查询结果数量最多。基于分层抽样的数据源选择与Stat Miner方法的不同在于:①基于分层抽样的数据源选择考虑选择一部分数据源来得到所有查询结果,使得总体查询开销最小。而Stat Miner目标是选择top-K个数据源。②Stat Miner是基于查询进行分层抽样,在整个查询空间中进行抽样,再去得到查询结果作为样本。而分层抽样的方法是对给定查询层次,基于其查询结果进行抽样,在每层简单随机抽样,使得结果数量少的查询仍然能够得到比较精确的结果。③Stat Miner假设所有的查询都是需要通过离线学习好的覆盖率和重叠率来对数据源静态排序,适用于少量的数据源。但实际中,产生较大的统计数据误差影响数据源选择的效率;同时,在大量数据源选择时,需要计算大量的统计数据,因而非常耗时。利用离线样本和在线的数据源查询结果即可得到较为精确的统计数据,可以处理大量数据源的选择。