我在 sql server 数据库中有一个包含两个字段的表,我的 asp.net 应用程序调用一个带有“@SearchString”参数的存储过程,该存储过程查找在两个字段的串联中找到 @Searchstring 值的所有记录表,称它们为“Field1”和“Field2”
所以逻辑看起来像这样(我已经简化了实际的查询):
CREATE PROCEDURE [dbo].[sp_FindMatches] @SearchString varchar(30)
AS
SELECT * FROM Table1 WHERE Field1+Field2 LIKE @SearchString
我想改进这个相当基本的匹配算法,以便它匹配的记录没有那么严格。例如,如果用户输入“DOG HOUSE”作为参数,现有 SP 中相当基本的逻辑将返回找到确切字符串的记录。我希望它也只返回带有“DOG”和“HOUSE”的记录,即使字符串并不完全相邻。
如果有一种方法可以根据“最佳匹配”对记录进行排名,那就更好了,即如果找到“DOG HOUSE”,它是完全匹配的,如果找到“DOG”和“HOUSE”,第二个最佳匹配,如果“dog but not 'house' 或 'house' but not 'dog' 第三最佳等。
是否有一种通用算法可以满足我的大部分需求?