Ответы пользователя по тегу Веб-разработка
  • Зачем нужны Solr, Sphinx, и прочие системы поиска?

    @L1ar
    .net / php
    Я так понял, что основная непонятка в том, где поисковый движок берет данные?
    Любой поисковый движок ищет инфу в своих индексах, которые строятся на основе данных, которые мы ему отдали. Очень грубый пример для сфинкса - например, у вас есть база с товарами и надо сделать поиск по названию и описанию. Если делать это средствами БД, то это будет что-то вроде
    select id from products where name like '%search_phrase%' or description like '%search_phrase%'
    (я не беру в расчет спец. средства разных бд для полнотекстового поиска). Ну и сразу понятно, что like будет выполняться адово долго. В итоге на 1 запрос у вас удйет от пары сек и до вечности.
    И тут приходят поисковые движки. На примере сфинкса - скармливаем ему всю инфу о товарах (айди, название, описание). Как именно это делается зависит от типа индекса. Можно указать вообще sql запрос, который выполнит сфинкс, чтобы наполнить свой индекс. Далее он по своим алгоритмам строит индексы, оптимизированные для текстового поиска. И делаем уже выборку через него
    select id from i_products where match('search_phrase')
    (синтаксис примерный). И получаем айдишки найденных продуктов. В данном случае поиск выполняется очень быстро (если индекс правильно настроен) и вместо нескольких секунд получаем несколько миллисекунд.
    Ответ написан
    3 комментария