我已经使用.NET Core创建了一个Web API,并且我目前正在与一个端点争执,该端点返回与客户地址相关的相似客户地址的顶部列表作为输入。
简而言之:我有一个名为 v1 / customer / lookup 的端点,其中包含以下主体对象:
{ customerName: "Facebook Ireland Ltd.", street: "4 Grand Canal Square", city: "Dublin"}
此实时查询使用实体框架访问Azure数据库并引用具有700k条目的表。我要的数据是客户名称,街道以及城市和街道。相同的数据在MS SQL数据库表中。 我正在使用外部库(https://nugetmusthaves.com/Package/DuoVia.FuzzyStrings)来检查数据库中是否有给定的客户名称(例如“ Facebook”)以及可以找到的匹配百分比。
例如:
Input customer name: "Facebook" -> in database "Facebook" -> 1.00 (100%)
Input customer name: "Fazebok" -> not in database -> 0.75 (75%)
直接匹配查找(100%)相当快,耗时200-300ms-即使列表中有70万个项目。 当我找不到直接匹配项时,我必须使用上述库对大列表中的每个项目进行检查。这使API响应大约需要15秒。 如果您需要一些代码-那不是我的主要重点。我的问题是如何改进进行解释性检查的一般方法。
以下是我尝试过的事情的简短列表:
我已经在做的是在给定时间内缓存数据库表,这样第一个请求可能会花费更长的时间,而下一个请求要快得多。
也许你们中的某人对如何实现这种实时模糊逻辑有一个一般的过程想法。听到一些想法会很高兴!
谢谢!