Поиск в базе данных

Андрей Перфильев
На сайте с 20.07.2004
Offline
126
1079

Есть большая база данных на 30000 записей, в ней нужно осуществить поиск в нескольких полях:

varchar(255), text.

Подскажите наиболее производительный алгоритм, т.к. существующий на данный момент ищет, бывает, за 5, а то и более, секунд:(

yourich
На сайте с 21.06.2003
Offline
38
#1
a1.:
Есть большая база данных на 30000 записей, в ней нужно осуществить поиск в нескольких полях:
varchar(255), text.
Подскажите наиболее производительный алгоритм, т.к. существующий на данный момент ищет, бывает, за 5, а то и более, секунд:(

Создать дополнительно 2 таблицы:

ключевые слова (текст слова и его ИД),

таблица-связка ИД записи - ИД слова.

Получив запрос на поиск, разбить его на слова, получить ИД слов из таблицы ключевых слов ( делать через "=", быстрая операция ). По полученному ИД слов найти ИД записей (выборка по цифровому полю - быстрая операция).

Группировать и сортировать по вкусу.

Можно делать сложные запросы объединив некоторые этапы в один (зависит от используемого языка БД).

Nikolai Popkov
На сайте с 07.06.2001
Offline
210
#2
партнерские программы (http://www.ebanners.ru/viewforum.php?f=7), словарь термины SEO (http://www.ebanners.ru/viewtopic.php?t=548) Форум маркетинг (http://www.reclama.su/) Reclama.Su, обмен ссылками (http://www.ebanners.ru/viewforum.php?f=13), Reklama.SU: контекстная реклама (http://www.reklama.su/) по цене Яндекса+продвижение за результат
A
На сайте с 23.10.2003
Offline
196
#3

Да все проще, ведь в mysql есть Full-Text Search Functions.

андроид ТВ (http://qway.com.ua/android_tv) и экшн камеры (qway.com.ua/action-cameras) в Украине.
Андрей Перфильев
На сайте с 20.07.2004
Offline
126
#4

Щас как раз используется поиск, куски которого из этого материалоа взяты, но статья старая и в ней не используются новые возможности mysql, вложенные запросы и т.д., поэтому прошу совета.

pelvis
На сайте с 01.09.2005
Offline
345
#5

для вашей проблеммы больше всего подходит совет yourich

Продаю вывески. Задарма и задорого (https://www.ledsvetzavod.ru/)
Андрей Перфильев
На сайте с 20.07.2004
Offline
126
#6

Скорее всего так и поступлю, когда на выделенный сервер перейду, т.к. база весит ок. 100 метров и места на нынешнем хостинге не хватает.

Если есть еще алгоритмы какие, то буду рад...

зы Мож кто кинет в личку пример своего поиского кода?

Z
На сайте с 03.01.2004
Offline
32
#7

Посмотрите виртуальную схему htdb:// для индексирования БД в mnogosearch и dataparksearch.

I
На сайте с 26.05.2001
Offline
64
#8

Кстати, MySQL full text search может быть не лучшим решением. Там у нее в основе лежит векторная модель (поиск кажется последовательный перебор) со своими тараканами.

Приходите завтра, завтра будет! (http://itman666.livejournal.com)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий