我有一個在sql server數據庫中有兩個字段的表,我的asp.net應用程序使用'@SearchString'參數調用存儲過程,存儲過程查找所有記錄@Searchstring值在表中的兩個字段的串聯發現,稱他們爲「字段1」和「字段2」在存儲過程中使用的簡單文本匹配alogritm
所以邏輯是這樣的(我已經簡化了實際的查詢):
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」被發現,第二最佳匹配,如果「狗而不是‘房子’或‘房子’而不是‘狗’第三最好等
是否有一個通用的算法,做很多我想要的東西?