代码之家  ›  专栏  ›  技术社区  ›  zer02

Rails:一种检查DB中重复项的方法?关联数据源

  •  0
  • zer02  · 技术社区  · 10 年前

    我有一个关于联盟数据源的问题。

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

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

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

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

    当然,它们还有更多的参数。我仍然需要一个算法来防止这种情况发生。类似于产品参数的相似性匹配算法。

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

    可在此处找到参数的详细列表 GET Products Documentation WebApi

    非常感谢你!

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

    1 回复  |  直到 10 年前
        1
  •  1
  •   korada    10 年前

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

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

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

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

    并为每个产品类别定义属性。将此与模糊匹配相结合,即使在拼写错误时,您也应该能够获得良好的匹配,以下内容应该匹配:

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