У меня есть таблица с двумя полями в базе данных сервера SQL, и мое приложение 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» найдено, второе лучшее совпадение, если "собака, но не" дом "или" дом ", но не" собака ", третье место и т. д.
Есть ли общий алгоритм, который делает многое из того, что я хочу?