У нас есть страница поиска местоположений, которая дает нам вызов, с которым я никогда не сталкивался.SQL Query сортировать по ближайшему совпадению
В нашей базе данных есть список городов, состояний и т. Д. С соответствующими геокодами. Все было забавно до сих пор ...
У нас есть два местоположения в городе под названием «Водопад Черной реки, WI», и мы недавно открыли его в «River Falls, WI».
Таким образом, наша таблица содержит записи следующим образом:
Location City State
-------------------------------------
1 Black River Falls WI
2 Black River Falls WI
3 River Falls WI
Очевидно наш запрос использует «LIKE» положение, чтобы соответствовать город, но когда клиент ищет текст «River Falls», в результатах поиска, Первые показанные результаты всегда «Черные реки».
В нашем приложении мы всегда используем первое совпадение и используем его по умолчанию. (Мы могли бы его изменить, но было бы много не предусмотренных в бюджете)
Я знаю, что я мог бы просто изменить порядок сортировки, чтобы сначала появился «Речной водопад», но это небрежное решение, которое работает только в этот один случай.
Что мне интересно, если есть способ, через T-SQL (SQL Server 2008r2) сортировать по «наилучшему совпадению», где «River Falls» «победит», если мы ищем «River Falls, WI »и« Black River Falls »будут работать, если мы будем искать WI Black River Falls.
У SSIS есть [Нечеткий поиск] (http://technet.microsoft.com/en-us/library/ms137786 (v = sql.105) .aspx) преобразование, которое придаст сходство и уверенность. Также MDS имеет функцию сходства [подробнее] (http://blog.hoegaerden.be/2011/02/05/finding-similar-strings-with-fuzzy-logic-functions-built-into-mds/) –