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

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

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

    Delta Soft Гость

    Репутация:
    0
    Добрый день.

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

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

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

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

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

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

    Barmutik Гость

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

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

    sdriver Гость

    Репутация:
    0
    Да поисковой движок вам не помешает.


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

    Barmutik Гость

    Репутация:
    0
    Для: sdriver

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

    pushkin Гость

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

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

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

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

    Barmutik Гость

    Репутация:
    0
    Для: pushkin

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

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