【问题标题】:Linq Fuzzy SearchLinq 模糊搜索
【发布时间】:2020-03-15 17:50:54
【问题描述】:

我正在根据取货地点和送货地点从数据库中筛选结果。

我的数据库包含以下值:

取货地点:San Jose 95002、San Jose 95112、San Jose 95119 等

投递地点:SFO、SJC、卡斯特罗谷

我的搜索字符串是:

皮卡搜索字符串:195, San Jose, California, 95119

删除搜索字符串:56, Castro Valley Boulevard, Castro Valley, California

我正在拆分搜索字符串并在我的 Linq 查询中使用“包含”来寻找最佳匹配,但为了缩短时间,我会在找到匹配后立即中断循环,这会返回不需要的结果,是否存在更好的方法?

取货地址: 195|San Jose|California|95119

目的地地址: 56|Castro Valley Boulevard|Castro Valley|California

            String startLocation = PickupAddress.Replace("\"", "").Replace("/", "");
            string[] locationList = startLocation.Split('|');
            var rateData = new Rate();
            foreach (var location in locationList)
            {
                String startLocationData = location.Trim();
                rateData = (from p in _context.Rates
                            where (p.StartLocation.Contains(startLocationData) 
                            && p.EndLocation.Contains(DestinationAddress))
                            && p.VehicleCategoryID == VehicleID
                            select p).FirstOrDefault();
                if (rateData != null)
                {
                    break;
                }
            }


            if (rateData != null)
            {
                String amount = Convert.ToString(rateData.Amount).Replace('$', ' ');
                String plusRate = Convert.ToString(rateData.PlusRate).Replace('$', ' ');
                String fee = Convert.ToString(rateData.QwykrFee).Replace('$', ' ');
                Decimal retVal = Convert.ToDecimal(amount) + Convert.ToDecimal(plusRate) + Convert.ToDecimal(fee);
                return retVal;
            }
            else
            {
                return 0;
            }

【问题讨论】:

    标签: c# mysql asp.net linq search


    【解决方案1】:

    https://nugetmusthaves.com/Tag/fuzzy

    https://github.com/DanHarltey/Fastenshtein

    最快的 .Net Levenshtein。

    Fastenshtein 是经过优化和单元测试的 Levenshtein 实现。它针对速度和内存使用进行了优化。

    从包含的基准测试中,将 3 到 20 个随机字符的随机词与其他 Nuget Levenshtein 实现进行比较。

    【讨论】:

      猜你喜欢
      • 2014-08-20
      • 2011-10-28
      • 2016-06-12
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      相关资源
      最近更新 更多