ОБСУЖДЕНИЕ

Организовать поиск

5 ответов 5,7 тыс.
Статус
Закрыто для дальнейших ответов.
Автор темы
Добрый день.

Тут ситуация такая.

Есть БД PostgreSQL, на нее навешан интерфейс.

Нужно организовать по ней быстрый поиск (пользователь вводит строку, из базы вытаскиваются все записи, в определенных полях которых содержится данная строка) может кто-нить поделится мыслями:

В базе порядка 200000 записей
В день несколько тысяч, а то и десятков тысяч пользователей делают к ней запрос.

Из существующих вещей можно сравнить наверное с очень крупным интернет магазином. Поэтому хотелось бы чтобы ответ был виден почти моментально.

Всем заранее спасибо.
 
Нужно использовать специализированные решения для поиска в БД.. стандартными средствами врядли будет работать в таком темпе как Вам надо...

Можно посмотреть в сторону www.searchinform.com ... на правах рекламы :unsure:
 
Да поисковой движок вам не помешает.


2 Barmutik
Но у гуглика быстрее :unsure:
 
Для: sdriver

Быстрее .. нет ... раскрученне да ... да и стоимость решения под конкретные нуждны отличается аж на пару порядков :unsure:
 
Тут решений можно много напридумывать. Самое простое, что приходит в голову: если у вас в базе обновления самих данных происходят сравнительно редко (по отношению к количеству запросов по поиску данных), то можно попробовать накрутить всяческих индексов, чтобы ускорить сами запросы на поиск. Индекс - это как таблица, только данные в ней строго отсортированы и поиск по ним ведется не линейным способом, а бинарным (в современных БД это вообще изощренный/извращенный бинарный поиск), поэтому скорость нахождения данные возрастает разительно. А 200 тыс. записей - это не так и много для нормального индекса. Если использовать простой бинарный поиск, то нужно будет всего лишь
17-18 операций сравнения, что согласитесь для современных компьютеров вообще смешно.

Базу также можно попробовать реплицировать, если конечно ваша DB это поддерживает - разнести на несколько серверов чтобы разгрузить каждый сервер в частности.

Также можно попробовать вести статистику запросов на поиск и закэшировать результаты поисков.

А вообще, нужно знать структуру базы чтобы что-то оптимизировать.
 
Для: pushkin

Всё это будет работать если не надо делать ПОЛНОТЕКСТОВЫЙ ПОИСК!
 
Статус
Закрыто для дальнейших ответов.