我正在尝试使用我在'net上找到的levenshtein算法来计算与搜索项最接近的值.为了实现模糊项匹配.我当前的查询运行大约45秒.我希望我可以优化它.我已经为我计算出levenshtein值的字段添加了索引.我发现的levenshtein函数可能不是最优化的,我在它的实现中不予赞誉.这是这个功能:
CREATE FUNCTION [dbo].[LEVENSHTEIN]( @s NVARCHAR(MAX), @t NVARCHAR(MAX) )
/*
Levenshtein Distance Algorithm: TSQL Implementation
by Joseph Gama
http://www.merriampark.com/ldtsql.htm
Returns the Levenshtein Distance between strings s1 and s2.
Original developer: Michael Gilleland http://www.merriampark.com/ld.htm
Translated to TSQL by Joseph Gama
Fixed by Herbert Oppolzer / devio
as described in http://devio.wordpress.com/2010/09/07/calculating-levenshtein-distance-in-tsql
*/
RETURNS INT AS
BEGIN
DECLARE @d NVARCHAR(MAX), @LD INT, @m INT, @n INT, @i INT, @j INT,
@s_i NCHAR(1), @t_j NCHAR(1),@cost INT
--Step 1
SET @n = LEN(@s)
SET @m …Run Code Online (Sandbox Code Playgroud)