int similar_text ( string first, string second [, float &percent] )
percent 直接反映相似度不知道计算这个有什么实际意义
echo similar_text('检查内容重复情况', '检查内容不重复情况', $r); //16 已比较的长度
echo $r; //94.1176470588 两个字符串的相似程度
但是他们的意义是相反的!
percent 直接反映相似度不知道计算这个有什么实际意义
echo similar_text('检查内容重复情况', '检查内容不重复情况', $r); //16 已比较的长度
echo $r; //94.1176470588 两个字符串的相似程度
但是他们的意义是相反的!
GO
SET ANSI_NULLS ON
GOCREATE function get_semblance_By_2words
(
@word1 varchar(50),
@word2 varchar(50)
)
returns nvarchar(4000)
as
begin
declare @re int
declare @maxLenth int
declare @i int,@l int
declare @tb1 table(child varchar(50))
declare @tb2 table(child varchar(50))
set @i=1
set @l=2
set @maxLenth=len(@word1)
if len(@word1)<len(@word2)
begin
set @maxLenth=len(@word2)
end
while @l<=len(@word1)
begin
while @i<len(@word1)-1
begin
insert @tb1 (child) values( SUBSTRING(@word1,@i,@l) )
set @i=@i+1
end
set @i=1
set @l=@l+1
end
set @i=1
set @l=2
while @l<=len(@word2)
begin
while @i<len(@word2)-1
begin
insert @tb2 (child) values( SUBSTRING(@word2,@i,@l) )
set @i=@i+1
end
set @i=1
set @l=@l+1
end
select @re=isnull(max( len(a.child)*100/ @maxLenth ) ,0) from @tb1 a, @tb2 b where a.child=b.child
return @re
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
--测试
--select dbo.get_semblance_By_2words('我是谁','我是谁啊')
--75
--相似度