Запрашивать имена - PullRequest
       2

Запрашивать имена

1 голос
/ 23 марта 2010

У меня есть таблица (скажем, «Демография») на SQL Server. В этой таблице приведены следующие столбцы «Фамилия», «Имя», «Имя», «Префикс», «Суффикс».

У меня есть одно текстовое поле для поиска их на веб-странице. Мой вопрос: Какова хорошая стратегия разработки для запросов, где пользователь может искать различные комбинации имен, включая фамилии, которые имеют пробелы

например. "Смит Джеймс младший" , Наши клиенты хранят младший иногда в суффиксе, а иногда просто привязывают его к фамилии. Иногда Смит Джеймс младший может быть полностью фамилией.

Ответы [ 2 ]

1 голос
/ 23 марта 2010

Вы можете начать с расстановки приоритетов по мнимым комбинациям (имя + фамилия, имя середины + фамилия, фамилия + суффикс и т. Д.).Затем для каждой комбинации вы можете написать инструкцию SELECT, которая возвращает

SELECT 50 AS score, tableId
FROM SearchTable
WHERE '%' + FirstName + ' ' + LastName + '%' LIKE @searchphrase

UNION

SELECT 40 AS score, tableId
FROM SearchTable
WHERE '%' + MiddleName + ' ' + LastName + '%' LIKE @searchphrase

ORDER BY score DESC

. Для каждого оператора вы можете манипулировать счетом на более высоком уровне (например, +5, если это полное совпадение в LastName).

Чтобы отфильтровать пробелы и другие не доступные для поиска символы, я предлагаю вам создать пользовательскую функцию .

Удачи!

0 голосов
/ 24 марта 2010

Заметил, что вы работаете над MS SQL 2005.
Вы смотрели на Полнотекстовый поиск SQL Server 2005 ?

Хорошая статья о поиске Я рекомендую: Понимание полнотекстового поиска в SQL Server 2005

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