C# 显示类似的产品或变体

C# 显示类似的产品或变体,c#,asp.net-mvc,C#,Asp.net Mvc,我想展示类似的产品,即a产品的变体。目前我正在做以下工作: public IList<Product> GetVariants(string productName) { EFContext db = new EFContext(); //using Entity Framework return db.Products .Where(product = > product.ProductName == productName)

我想展示类似的产品,即a产品的变体。目前我正在做以下工作:

public IList<Product> GetVariants(string productName)
{
    EFContext db = new EFContext();  //using Entity Framework
    return db.Products
           .Where(product = > product.ProductName == productName)
           .ToList();
}
public IList GetVariants(字符串产品名称)
{
EFContext db=new EFContext();//使用实体框架
返回数据库产品
.Where(product=>product.ProductName==ProductName)
.ToList();
}
但是,这会导致完全匹配,即当前产品本身。我正在考虑使用Levenshtein Distance作为获得类似产品的基础。但是,在此之前,我想检查一下大多数开发人员是如何获得变体的

  • 使用Levenshtein距离好吗?工业上是否为此目的使用它
  • 在将产品添加到数据库时,是否必须在数据库中添加另一个表来显示产品的变体
  • 我在前一段时间写的一个系统中使用了有效地解释拼写错误的方法。依我看,这比简单的编辑距离计算要好得多,因为它可以相当有效地计算字符串长度。关于开源实现,请参见on-SO

    最后我用C#编写了它,并将其作为函数导入SQL server,但速度仍然相对较慢。在我的例子中,它起作用主要是因为这样的查询很少执行(一天100-200次)

    如果你期望有大量的流量,你必须建立一个索引来加快这些查找。一种策略是定期计算每对产品之间的距离,如果距离超过某个阈值,则将其存储在索引表中。为了减少需要完成的工作量,每天只能运行一次或两次,并且可以将此限制为自上次运行以来的新记录或修改记录。然后,您可以快速查找类似的产品并按距离订购。

    我在不久前编写的一个系统中有效地使用了这个方法来解释拼写错误。依我看,这比简单的编辑距离计算要好得多,因为它可以相当有效地计算字符串长度。关于开源实现,请参见on-SO

    最后我用C#编写了它,并将其作为函数导入SQL server,但速度仍然相对较慢。在我的例子中,它起作用主要是因为这样的查询很少执行(一天100-200次)


    如果你期望有大量的流量,你必须建立一个索引来加快这些查找。一种策略是定期计算每对产品之间的距离,如果距离超过某个阈值,则将其存储在索引表中。为了减少需要完成的工作量,每天只能运行一次或两次,并且可以将此限制为自上次运行以来的新记录或修改记录。然后你可以快速查找类似的产品并按距离订购。

    是的,这是一个高流量的网站。是的,这是一个高流量的网站。