Зачем нужны Solr, Sphinx, и прочие системы поиска?

Никак не могу понять, я знаю что Solr используется допустим в интернет магазинах, и оттуда берутся данные вроде как. Но в чем смысл, если у меня в магазине есть своя БД с товарами? Я наслышан часто о Solr, Sphinx, ElasticSearch, но не могу понять - зачем они в принципе нужны? Что это такое? В гугле не забанен, просто не совсем понимаю
вопрос наверно больше - откуда он берет данные, этот Sphinx или Solr?
Мы даем какой-то запрос, и он по всему интернету ищет и возвращает в каком то формате?
  • Вопрос задан
  • 2395 просмотров
Решения вопроса 1
@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')
(синтаксис примерный). И получаем айдишки найденных продуктов. В данном случае поиск выполняется очень быстро (если индекс правильно настроен) и вместо нескольких секунд получаем несколько миллисекунд.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
AlexMaxTM
@AlexMaxTM
Эти системы индексируют контент, что значительно ускоряет поиск. Можно дополнительно подключить модули, которые будут искать синонимы и исправлять ошибки ввода.
Ответ написан
castomi
@castomi
Серверный администратор - tickets.settin.ru
Sphinx ставлю на битриксы, поиск становится шустрее и выдача по поиску более корректная. Я пользую его только для этого, но уверен плюсов у него должно быть больше)
Ответ написан
lukoie
@lukoie
Вы ставите их как "плагины" на своем сервере, для индексации контента, и дополнительных плюшек. Это такие себе глобальные системы поиска для вашего контента, вместо поисковых алгоритмов и систем поиска в ЦМС.
Ответ написан
Комментировать
Kwisatz
@Kwisatz
Больше web-приложений, хороших и разных
Они нужны затем чтобы выполнять быстрый морфологический поиск по вашим данным.
Однако при наличии нормальной СУБД, как например PostgreSQL их полезность уже не так очевидна, поскольку у последнего есть FTS и n-грамм-индексы.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Да просто попиариться: создали "подпорки" под CMS и всё.
А так - берёшь алгоритмы с википедии и делаешь тоже самое на любой БД.

Пример кода поиска подстроки в тексте вне зависимости от склонений, падежей, суффиксов и окончаний.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы