run*_*g.t 8 mysql sql select fuzzy-logic fuzzy-comparison
我们假设我们有一个人员表(姓名,姓名,地址,SSN等).
我们想要找到与指定人A"非常相似"的所有行.我想实现某种模糊逻辑比较A和表People中的所有行.将有几个模糊推理规则分别在几个列上工作(例如3个名称的模糊规则,2个姓氏规则,5个地址规则)
问题是以下哪两种方法会更好,为什么?
将所有模糊规则实现为存储过程,并使用一个重的SELECT语句返回与A"非常相似"的所有行.此方法可能包括使用soundex,sim metric等.
实现一个或多个更简单的SELECT语句,返回不太准确的结果,"与A非常相似",然后将A与所有返回的行(数据库外部)进行模糊比较,以获得"非常相似"的行.因此,模糊的比较将在我最喜欢的编程语言中实现.
表人们应该有多达500k行,我想每天制作大约500-1000个这样的查询.我使用MySQL(但这还有待考虑).
我真的不认为有明确的答案,因为这取决于问题中未提供的信息。无论如何,评论太长了。
DBMS 擅长根据索引检索信息。让数据库服务器在繁重的计算中浪费时间是没有意义的,除非它专用于这个特定目的(如@Adrian所回答)。
因此,您的客户端应用程序应将规则所需的信息检索委托给 DBMS。
如果计算量较小,则所有操作都可以在服务器上完成。否则,将其拉入客户端系统。
第二种方法的缺点在于从服务器到客户端传输的数据量以及要建立的连接数量。因此,通常它是服务器中计算和数据传输之间的折衷。根据模糊规则的特殊性来实现平衡。
编辑:我在评论中看到您几乎肯定必须在客户端中实现代码。在这种情况下,出于维护目的,您应该考虑一个附加标准,即代码局部性,即尝试将所有相关代码放在一起,而不是在系统(和语言)之间传播。
| 归档时间: | 
 | 
| 查看次数: | 1498 次 | 
| 最近记录: |