Оптимизировать поисковый движек php
Необходиом оптимизировать самописный словесный поисковый движек для повышения скорости поиска с отображением результатов поиска первой страницы. сейчас поиск отрабатывает (а точнее функция выгрузки данных) более 60 секунд иногда и 180секунд.
Цель: поиск отрабатывает менее чем за 15 секунд.
Сам поиск отрабатывает быстро (1-5 сек), результаты поиска записываются в таблицу№1 sdb_data.search_res clip2net.com/s/3MRpXb3
Затем, по id (которые попали в результат поиска) из таблицы №1 выполняется Select в котором содержится условие фильтра выбора данных,
затем выбранные данные сортируются по заданному алгоритму
затем отображается первая страница результатов поиска в которой 30 документов.
В поиск попадает обычно 1000 3000 документов.
Объем выгружаемых данных 30-80мбайт
Нша БД более 100Гбайт
Проблемы уже обнаруженные:
1. Нужен индексатор по полю х511_01 х511_45. сейчас в этом поле слова и фразы через запятую. Слова и фразы из справочника МКТУ. Можно сделать индекс и сократить объем записи данного поля.
2. Селект со сложным фильтром отрабатывает по всем найденым документам (1000-3000), соответственно объем массива переменной в мегабайтах. МОжно сначала выполнять запрос на сравнение записей условям фильтра и записывать результат в таблице№1 (добавить поле filtr), затем выполнить сортировку и записать результаты в таблицу №1 в поле sort
3. выгрузку из БД делать не всех сразу документов а по странино, следующие двве или три выполянть в фоне.
4. Исходный файл (соновной) содержит в себе кучу других функций. Желательно разделить все на логические части.
5. часть кода создана с фрэймворком Кодигнайтер. Желательно сделать все самописное.
Коллеги! без предоплат. смотрите ТЗ и примите решение, да-сможете (Назовите сроки.) или нет-не сможете.
Задавайте вопросы.
Эдуард/ скайп: iaip-edwaks
Опубликован 13.08.2017 в 13:07
Заказ находится в архиве