Rails:检查数据库中重复项的方法?加盟数据源

时间:2014-07-31 19:44:51

标签: mysql ruby-on-rails matching similarity affiliate

我对联盟会员数据Feed有疑问。

例如来自亚马逊或其他电子商店合作伙伴。我正在尝试导入他们的产品数据,但是如果两家商店都销售相同的产品,我们希望避免重复。

例如亚马逊Product Title: iPhone 5 16GB Black

另一家商店使用Product Title: iPhone 5 16GB

它们应该被列为一种产品,现在想象我有10家商店销售iPhone 5。

当然他们还有更多参数。我仍然需要一种算法来防止这种情况发生。就像产品参数的相似性匹配算法一样。

有没有人有这方面的经验,可以告诉我,这种情况可以建议什么样的算法?

详细的参数列表可以在GET Products Documentation WebApi

找到

非常感谢!

可以通过EAN编号来完成,但如果没有提供此编号,该怎么办。

1 个答案:

答案 0 :(得分:1)

在开发算法之前,您需要定义业务规则。如果您的情况是除了标题之外的所有属性匹配,那么您可以尝试在标题上使用子字符串(一个是其他部分)匹配或模糊匹配。

我们使用模糊字符串匹配gem来查找重复的公司。

假设差异仅在标题上,您可以通过分析标题部分将更多智能放入算法中。在您的示例中,标题部分可以是模型,版本,容量和颜色。对于这个例子:

 required_attributes = [model, version, capacity]
 optional_attributes = [color]

定义每个产品类别的属性。将此与模糊匹配相结合,即使拼写错误也应该能够得到很好的匹配,并且匹配应该匹配:

 iPhone 5 16GB Black
 iPhone 5 16GB
 iPone 5 16GB White