Java 如何识别从多个提要收集的重复项并在数据库中链接到它们
我有一个数据库,存储从许多站点获取的产品详细信息,并通过各个站点API收集。调用提要时,详细信息存储在数据库表中 我遇到的问题是,由于卖家在许多网站上列出了完全相同的产品,我的数据库中最终出现了重复的项目,然后当我在网页上显示这些项目时,会出现许多重复的项目 问题在于,商品没有任何明显的唯一标识符,它有商品的具体细节(可能有很多),然后是卖家对商品的描述 我希望该项目显示一次,然后向用户提供该项目在其他地方的详细信息 在不降低整个数据库的速度的情况下,如何识别传入的重复项?然后,我如何从所有副本中选择一个广告,然后存储该广告显示在哪些其他网站上Java 如何识别从多个提要收集的重复项并在数据库中链接到它们,java,database,jsp,duplicate-data,multiple-records,Java,Database,Jsp,Duplicate Data,Multiple Records,我有一个数据库,存储从许多站点获取的产品详细信息,并通过各个站点API收集。调用提要时,详细信息存储在数据库表中 我遇到的问题是,由于卖家在许多网站上列出了完全相同的产品,我的数据库中最终出现了重复的项目,然后当我在网页上显示这些项目时,会出现许多重复的项目 问题在于,商品没有任何明显的唯一标识符,它有商品的具体细节(可能有很多),然后是卖家对商品的描述 我希望该项目显示一次,然后向用户提供该项目在其他地方的详细信息 在不降低整个数据库的速度的情况下,如何识别传入的重复项?然后,我如何从所有副本
谢谢你的帮助 我认为这不是一个代码或数据库问题。你说: 问题是该项没有任何明显的唯一标识符 你需要先弄清楚这种单一性是什么,然后才能让电脑帮你做这件事。听起来你需要某种模糊的字符串相似性算法
一些你认为重复的数据可能有帮助。
< P>这个问题有两个方面,两个都在你的一边。当您知道如何处理这个问题时,将代码写入程序(Java或SQL将很容易)。我将首先命名它们,然后确定解决方案Id
列,当您使用电子表格原型功能时,这是很好的;但它与数据库或开发级功能的要求相差甚远。您的用户(或老板)自然期望从数据库获得数据库功能,而您没有提供任何。(不,它不需要模糊字符串逻辑或任何类型的魔法。)Id
列。该列为电子表格提供了一个RowId
,但它并不意味着表的内容或标识产品的列制造商
和型号
;短的产品名称
,而不是长的描述
(或者对于您的公司,长的描述是一个标识符)。与您的用户合作,并解决这一问题产品
周围有一小群表,例如制造商
,产品类型
,可能是供应商
,等等产品中会有多个。所有要搜索的标识符都需要编制索引(唯一或不唯一)。请注意,唯一索引不能为空,因此不能选择可选列
产品
的单个唯一标识符可能不是一列。没关系,我们可以为数据库中的键计算多个列;它们被称为复合键Id
列。请注意,这是一个附加列和附加索引。它不能替代产品
的标识符,即候选密钥;它们不能被移除网站
表来管理提要产品
和网站
之间将有一个关联表(多对多)。我们称之为ProductSite
。它将只包含我们的ProductId
,以及网站代码。它可能包含
Price`。内容对单个进料循环有效ProductIn
表,可能每个源网站一个。这只是来自外部源的平面文件。添加