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

  • Автор темы Delta Soft
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

Delta Soft

#1
Добрый день.

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

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

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

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

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

Всем заранее спасибо.
 
B

Barmutik

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

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

sdriver

#3
Да поисковой движок вам не помешает.


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

Barmutik

#4
Для: sdriver

Быстрее .. нет ... раскрученне да ... да и стоимость решения под конкретные нуждны отличается аж на пару порядков :unsure:
 
P

pushkin

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

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

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

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

Barmutik

#6
Для: pushkin

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