У меня есть таблица с двумя полями в базе данных SQL Server, и мое приложение asp.net вызывает хранимую процедуру с параметром «@SearchString», и хранимая процедура находит все записи, @Searchstring значение найдено в конкатенации двух полей таблицы, их называют «Field1» и «Field2»простой текстовый сопоставление 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» найден, это точное совпадение, если «СОБАКА» и «ДОМ» найдены, второй лучший матч, если «собака, но не„дом“или„дом“, но не„собака“третий лучший и т.д.
существует общий алгоритм, который делает многое из того, что я хочу?