数据库
首页 > 数据库> > java – 如何识别从多个源收集的重复项并在数据库中链接到它们

java – 如何识别从多个源收集的重复项并在数据库中链接到它们

作者:互联网

我有一个数据库,存储从许多站点获取的产品的详细信息,并通过各个站点API收集.当我调用feed时,详细信息存储在数据库表中.

我遇到的问题是,因为卖家在很多网站上列出完全相同的产品,我最终在我的数据库中有重复的项目,然后当我在网页上显示它们时,有很多重复.

问题是该项目没有任何明显的唯一标识符,它具有项目的具体细节(其中可能有许多),然后是来自卖方的项目描述.

我希望该项目能够显示一次,然后向用户提供项目列表的其他位置的详细信息.

如何在不降低整个数据库速度的情况下识别出来的重复项?然后,我如何从所有重复项中选择一个广告,然后存储广告显示在的其他网站.

谢谢你的帮助.

解决方法:

问题是双重的,两者都在你身边.当你弄清楚如何处理它时,将代码写入程序(Java或SQL将很容易).我先给他们起名,然后确定解决方案.

>由于某些未知原因,您假设从多个站点收集产品说明不会收集相同的产品.
>您习惯于常见且无意义的Id列,在使用电子表格原型设计功能时这很好;但它远不及数据库或开发级功能所需的.您的用户(或老板)自然希望数据库具有数据库功能,而您没有提供任何数据库功能. (不,它不需要模糊字符串逻辑或任何类型的魔法.)

这是用于建模关系数据库的IDEF1X标准的精简版本;部分是标识符.

>您需要考虑数据库术语,并考虑执行函数所需的数据库表,这意味着您不能使用自动增量Id列.该列为电子表格提供了RowId,但它并不暗示表格的内容或标识产品的列.
>您不能简单地从其他网站上删除数据,您需要考虑您的网站对产品的要求.贵公司对产品有何了解,以及如何识别产品?
>标识列的所有列和数据类型.
>确定哪些列是必需的,哪些是可选的.
>确定哪些是强标识符.例如.制造商和型号;短产品名称,而不是长描述(或可能是您的公司,长描述是标识符).与您的用户合作,并将其解决.
>您会发现实际上在Product周围有一小组表格,例如Manufacturer,ProductType,也许是Vendor等.
>组织这些表并对其进行规范化,以便您不会复制数据.
>确保您对这些标识符有一点尊重.选择哪一个是独一无二的.这些是候选钥匙.每个表至少需要一个,并且Product中将有多个表.将搜索的所有标识符都需要编入索引(唯一或不唯一).请注意,Unique Indices不能为Nullable,因此您无法选择可选列.
>产品的单个唯一标识符的用途可能不是单个列.没关系,我们可以为数据库中的密钥评估多个列;它们被称为复合键.
>采用最好,最稳定(一个不会改变的)唯一标识符,其中一个候选键,并将其作为主键.
>如果且仅当唯一标识符,主键(可能是复合键)非常长,因此不适合迁移到子表的主键,则添加代理键.这将是Id列.请注意,这是一个额外的列和附加索引.它不能代替产品标识符,即候选密钥;他们无法删除.

到目前为止,我们在您的公司网站上有一个产品数据库,这对它很有意义.现在我们可以评估网络另一端的产品;当我们这样做时,我们有一个强大的框架,我们可以用它来衡量我们从网络另一端获得的垃圾.

饲料

>您需要一个WebSite表来管理订阅源.
> Product和WebSite之间将有一个关联表(多对多).我们称之为ProductSite.它只包含我们的ProductId和WebSiteCode.它可能包含价格.内容对单个Feed周期有效.
>将每个订阅源加载到临时数据库或模式,传入的ProductIn表,可能是每个源网站一个.这只是来自外部源的平面文件.添加列IsValid并将Default设置为true.
>然后编写一些SQL,将ProductIn表与其松散和软盘内容进行比较,使用我们的Product表及其强标识符.

>我这样做的方法是,几次单独检查,每次检查标记失败的行,IsValid为false.最后将IsValid行插入到ProductSite中.
>你可能很幸运,并采取乐观的态度.也就是说,只要您在几个重要列上找到匹配项,匹配就有效. (反向默认和更新IsValid布尔值).
>这是需要一些来回工作的过程,直到它安定下来.这就是为什么你需要与Indentifiers合作的用户.目标是不排除任何外部产品,但您的出发点将排除许多产品.这将包括返回我们的Product表并改进Identifiers的内容(行中的值)以及用于标识匹配行的其他相关列.

>对每个网站重复一次.
>现在使用我们自信的信息从我们的产品表中填充我们的网站,并显示哪些网站从ProductSite销售该产品.

标签:duplicate-data,java,database,jsp,multiple-records
来源: https://codeday.me/bug/20191007/1866661.html