SQL Server データベースに 2 つのフィールドを持つテーブルがあり、asp.net アプリケーションが '@SearchString' パラメータを使用してストアド プロシージャを呼び出し、ストアド プロシージャは @Searchstring 値が 2 つのフィールドの連結で見つかったすべてのレコードを検索しますテーブル、それらを '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」が見つかった場合は 2 番目です。ベスト マッチ、「犬だが「家」または「家」ではなく、「犬」ではない場合」など。
私が望むことの多くを行う一般的なアルゴリズムはありますか?