как ускорить поиск shopscript?
У нас более 400000 товаров. Из за этого поиск притормаживает. Как его можно ускорить. https://electropoisk.ru/
У нас более 400000 товаров. Из за этого поиск притормаживает. Как его можно ускорить. https://electropoisk.ru/
6 ответов
Вам нужно ускорить весь сайт, а не поиск. Страницы открываются по 5 секунд, это критично много. Проблема в долгом ответе сервера.
Если вам нужно ускорить именно поиск, то смотрите в сторону Sphinx, ElasticSearch, Solr/Lucene. Малой кровью тут обойтись не получится, придется написать код и настроить софт.
Быстрый поиск по 400 000 товарам на MySQL вряд ли возможен, учитывая то, что он генерирует табличку с на порядок бОльшим количеством записей, по которой идет поиск.
Если хотите ускорить сайт, то при таком количестве товаров целесообразно вынести саму базу на отдельный хост, чтобы не делить I/O с PHP и другими приложениями.
Также посоветовал бы уйти от Apache в сторону nginx, и обновить версию PHP, хотя бы до 7.0. Так сайту будет легче дышать.
Это самое первое, что нужно предпринять, чтобы сайт стал работать шустрее.
Все зависит от реализации алгоритма поиска. У меня как-то была задача поиска по MySQL базе с 6+ млн строк в таблице. Поиск работал за доли секунды. Писалось только это на perl, т.к. так было надо. Поэтому 400к - это семечки, но, наверное, не для того алгоритма, который заложен в движке.
Реализация подобного быстрого поиска мне видится в следующем свете:
- отдельный мускуль-сервер с хорошими ттх (нормальные проекты никогда не сидят в одной "коробке")
- определение и сужение зоны поиска до необходимого минимума (допустим ищем только product.name и точка)
- создание отдельной таблицы с проверкой её актуальности по крону раз в сутки и/или в ручном режиме с примерно такой структурой product.id, product.name, product.url и запуск своего алгоритма поиска в этой таблице, чтобы не дергать основу постоянно поисковыми запросами
- интеграция поисковой формы, работающей с отдельным алгоритмом, во фронтенд с выдачей результатов из легкой таблицы
Для этих целей наверное стоит найти разработчика и скормить ему ТЗ.
Посоветуйте, к кому можно обратиться?
Отпишите мне на почту danforth@live.ru, обсудим с вами.
судя по всему проблему еще не решили до конца?