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

Тема в разделе "SQL", создана пользователем Delta Soft, 2 окт 2006.

Статус темы:
Закрыта.
  1. Delta Soft

    Delta Soft Гость

    Добрый день.

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

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

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

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

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

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

    Barmutik Гость

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

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

    sdriver Гость

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


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

    Barmutik Гость

    Для: sdriver

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

    pushkin Гость

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

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

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

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

    Barmutik Гость

    Для: pushkin

    Всё это будет работать если не надо делать ПОЛНОТЕКСТОВЫЙ ПОИСК!
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей