ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2019-10-07 12:04:35  阅读:176  来源: 互联网

标签:duplicate-data java database jsp multiple-records


我有一个数据库,存储从许多站点获取的产品的详细信息,并通过各个站点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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有