Поиск в нескольких таблицах с использованием MS SQL Server 2000 - PullRequest
0 голосов
/ 14 сентября 2010

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


лицо
ID
Имя
Улица
Город
Государство
Страна

Язык
LangCode
Язык

Проценты
ID
LastChangedBy
LastChangedOn

LocalizedInterest
InterestID
LangCode
Описание

PersonInterest
PersonID
InterestID


Теперь это только маленький пример. В нашей базе данных у нас есть около 8-9 локализованных таблиц (например, «Интерес»), с которыми можно связать человека. Человек может иметь несколько интересов, Человек может иметь несколько рабочих мест, Человек может иметь несколько образований, Человек может иметь несколько опытов, ...

Мне нужно создать функцию поиска. Допустим, вы вводите "том" в качестве условия поиска. Это должно дать список всех лиц с "том" в их имя, улица, город, штат, страна, в одном из своих интересов, в одном из своих рабочих мест, в одном из их образования, в одном из их опыта или в одном других связанных таблиц.

Если вы вводите несколько слов для поиска (например, «tom php»), он должен предоставить список всех лиц с «tom» в их имени, улице, городе, штате, стране, в одном из их интересов, в одном из своих рабочих мест, в одном из своих учебных заведений, в одном из своих опытов или в одной из других связанных таблиц И «php» в своем имени, улице, городе, штате, стране, в одном из их интересы, в одном из их рабочих мест, в одном из их образований, в одном из их опытов или в одной из других связанных таблиц.

На данный момент в таблице Person содержится около 4500 записей, и если я выполню внешнее объединение Person со всеми таблицами, которые мне нужно найти, то я найду около 1 300 000 записей и 40-50 полей для поиска.

Как мне подойти к этой проблеме, чтобы производительность была приемлемой? Клиент ожидает "что-то вроде Google" с точки зрения скорости и простоты использования.

Мы используем MS SQL Server 2000 и ASP.NET 2.0. Функциональность поиска должна быть добавлена ​​в существующее приложение, и изменение технологии или структуры базы данных невозможно.

1 Ответ

1 голос
/ 14 сентября 2010

Вы можете реализовать полнотекстовый поиск в соответствующих таблицах / полях, а затем создать запрос на его основе.Вы можете найти краткую информацию здесь .

...