SQL Server 2008 - поисковый запрос - PullRequest
3 голосов
/ 30 апреля 2010

Я не эксперт по SQL. Я пытаюсь элегантно решить проблему запроса, которая была у других. Удивительно, но Google не возвращает ничего, что помогает. По сути, в моем приложении есть поле «Поиск». Это поле поиска позволит пользователю искать клиентов в системе. У меня есть таблица «Клиент» в моей базе данных SQL Server 2008. Эта таблица определяется следующим образом:

Клиент

  • UserName (nvarchar)

  • Имя (nvarchar)

  • LastName (nvarchar)

Как вы можете себе представить, мои пользователи будут вводить запросы в разных случаях и, вероятно, регулярно неправильно вводят имена клиентов. Как мне запросить таблицу клиентов и вернуть 25 результатов, наиболее близких к их запросу? Я понятия не имею, как сделать это ранжирование и рассмотреть три поля, перечисленные в моей таблице.

Спасибо!

Ответы [ 3 ]

4 голосов
/ 30 апреля 2010

Я бы предложил полнотекстовый поиск . Полнотекстовый поиск предоставит множество вариантов для работы с некоторыми вариантами имен и может оценить "близость" результатов, используя CONTAINSTABLE Если вы обнаружите, что полнотекстового поиска недостаточно, вы можете рассмотреть возможность использования стороннего инструмента индексирования, такого как Lucene.

2 голосов
/ 30 апреля 2010

Возможно, вы захотите использовать SOUNDEX или DIFFERENCE в качестве альтернативы полнотекстовому поиску.

SELECT TOP 25 UserName, FirstName, LastName
FROM Customer
WHERE DIFFERENCE( UserName, @SearchValue ) > 2
ORDER BY DIFFERENCE( UserName, @SearchValue ), UserName
0 голосов
/ 30 апреля 2010

Проблема, которую вы можете легко решить, установив в таблице параметры сортировки без учета регистра

Неправильное написание не знаю, как с этим справиться, но взгляните на возможности полнотекстового поиска сервера sql ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...