FacetSearch - быстрый фасетный поиск с сервисом facetsearch.ru
У MODX есть один компонент фасетного поиска – mFilter2. Но на больших каталогах (от 10 000 товаров) mFilter2 работает очень медленно. Загрузка страницы и фильтрация могут занимать 6–10 секунд, даже с кэшем. Современные поисковые системы используют специальные базы данных – ElasticSearch, Sphinx и другие. На сервисе FacetSearch.ru развернут OpenSearch (fork ElasticSearch). Компонент FacetSeach для MODX загружает данные в базу OpenSearch и выводит на сайты с MODX форму фасетного поиска, фильтрующую товары и ресурсы с помощью запросов в сервис.

FacetSearch фильтрует большые каталоги за 0,6-0,9 секунды.
Тестирование
На сайте с 30 000 товаров:
На сайте с 50 000 товаров:
На сайте с 100 000 товаров:
Регистрация Справка
Планы
Основная проблема из-зи которой пришлось делать этот сервис, медленная работа mFilter2 на больших каталогах. Эта цель успешно достигнута. В будующем планируется сделать полнотекстовый поиск с исправлением опечаток, раскладки и транслитерации.
Заменить слайдер и сделать мобильную верстку. И другие доработки.
Update
Извиняюсь, что не слишком очевидно написал. Извечная проблема разработчика. Когда ты сделал, кажется все очевидным. А у пользователей возникает много вопросов.
1) Сделал сервис facetsearch.ru и компонент для MODX FacetSearch. Компонент выгружает данные ресурсов на сервис в базу OpenSearch. На сайте в каталоге подключается сниппет FacetSearch, который отправляет запросы в сервис, получает с него результаты, фильтры и агрегации(suggestions в mSearch2) и выводит их на страницу.
Описание как все сделать в Справка.
2) Компонент FacetSearch только подал на модерацию. В течении 3 дней надеюсь одобрят.
3) Со стоимостью все сложно :-). Пока стоимость сервиса 7000р в год. При этой цене 5-10 клиентов окупят разработку. Если будет больше 10 клиентов, снижу цену до 3500р в год.
4) Для того чтобы установить компонент у себя на VDS, нужно его немного доработать. Планировал попозже сделать версию FacetSearchPro. Он будет стоить в районе 7000р. Плюс на VDS требуется минимум 30ГБ диска. VDS c 30ГБ стоит 8 030р в год.
Upd 19.12.2022
Качать компонент пока тут https://gettables.ru/assets/packages/facetsearch-1.1.15-beta.transport.zip
Модерация модсторе попросила поправить замечания, а у меня сейчас другая вещь в приоритете. Пока некогда придумать другое описание компонента для модсторе.

FacetSearch фильтрует большые каталоги за 0,6-0,9 секунды.
Тестирование
На сайте с 30 000 товаров:
0.0027862: FacetSearch start
0.0023050: start search
0.1594729: end search
0.0162010: end element
0.0000160: start get_filters_aggs
0.4164310: end get_filters_aggs
0.6430540: Total time
8 388 608: Memory usage На сайте с 50 000 товаров:
0.0031459: FacetSearch start
0.0060859: start search
0.1748130: end search
0.0526061: end element
0.0000288: start get_filters_aggs
0.4727890: end get_filters_aggs
0.7630110: Total time
10 485 760: Memory usage На сайте с 100 000 товаров:
0.0025170: FacetSearch start
0.0034320: start search
0.2796969: end search
0.0380912: end element
0.0000370: start get_filters_aggs
0.4061460: end get_filters_aggs
0.7809291: Total time
23 068 672: Memory usageРегистрация и справкаРегистрация Справка
Планы
Основная проблема из-зи которой пришлось делать этот сервис, медленная работа mFilter2 на больших каталогах. Эта цель успешно достигнута. В будующем планируется сделать полнотекстовый поиск с исправлением опечаток, раскладки и транслитерации.
Заменить слайдер и сделать мобильную верстку. И другие доработки.
Update
Извиняюсь, что не слишком очевидно написал. Извечная проблема разработчика. Когда ты сделал, кажется все очевидным. А у пользователей возникает много вопросов.
1) Сделал сервис facetsearch.ru и компонент для MODX FacetSearch. Компонент выгружает данные ресурсов на сервис в базу OpenSearch. На сайте в каталоге подключается сниппет FacetSearch, который отправляет запросы в сервис, получает с него результаты, фильтры и агрегации(suggestions в mSearch2) и выводит их на страницу.
Описание как все сделать в Справка.
2) Компонент FacetSearch только подал на модерацию. В течении 3 дней надеюсь одобрят.
3) Со стоимостью все сложно :-). Пока стоимость сервиса 7000р в год. При этой цене 5-10 клиентов окупят разработку. Если будет больше 10 клиентов, снижу цену до 3500р в год.
4) Для того чтобы установить компонент у себя на VDS, нужно его немного доработать. Планировал попозже сделать версию FacetSearchPro. Он будет стоить в районе 7000р. Плюс на VDS требуется минимум 30ГБ диска. VDS c 30ГБ стоит 8 030р в год.
Upd 19.12.2022
Качать компонент пока тут https://gettables.ru/assets/packages/facetsearch-1.1.15-beta.transport.zip
Модерация модсторе попросила поправить замечания, а у меня сейчас другая вещь в приоритете. Пока некогда придумать другое описание компонента для модсторе.
Комментарии: 47
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
но если хотите бесплатно то давайте инструкцию по настройке VPS для чайников
чтобы было 2 варианта либо у себя либо у вас(возможно за денюжку)
ЗЫ
это чисто субъективное мнение, не принуждаю делиться со всеми вашими задумками
Я вот несколько раз перечитал, но так и не понял. Это подключаемый сервис, куда выгружается список товаров. А как это работает с MODX? Это виджет или внутри MODX есть компонент, который получает запрос, гоняет на сервис за результатами и быстро отображает их.
Как то прям мало информации
Решил что это один из десятков платных сервисов по поиску, к которому просто подключаемся
Но мало информации по примеру скорости. Для 100к ресурсов сколько опций у товара выводится на сортировку и сколько товаров в этой конкретной категории, где по вашим цифрам 0.7809291: Total time.
Ну и как быстро открывается, если выбран 1 и 2 опции разные в фильтре. (обычно на Get параметре я проверяю скорость для mFiler).
И большой каталог это сколько товаров? 100к или 1мл?
Вывод на страницу 0.8503351: Total time.
Выбрана 1 опция 0.8963568: Total time
плюс вторая 0.8500841: Total time
В фильтре 12 опций. 390 значений чекбоксов. 30 значений в селекте. 1 слайдер по цене.
Ресурсов в индексе 114471.
В отличии от mFilter2 от размера конкретной категории скорость не зависит. Не знаю по каким алгоритмам OpenSearch фильтрует, но он фильрует весь индекс(всю базу). Ему для фильтрации надо примерно 0,19с и 0,4 для агрегации(suggestions в mFilter2).
Большой имелось в виду от 10к. Для mFilter2 уже тяжелый каталог. Тестировал максимум на 100к. Эти 100к сделал дублированием товаров с 20к. Судя по тому, что при 50к и при 100к скорость не значительно отличается, то 1мл может и потянет.
Хотелось бы и при 1мл протестировать, но дублировать, тем алгоритмом что есть, до 1мл это часов 60-100. 30к дублировал 5ч. Новый ресурс создовал через процессор. Надо бы через SQL дублировать, но продукт в минишоп это 2 таблицы и не понятно как у них одинаковые id сохранить при дублировании.
Во вторых, где гарантия моментального ответа сервака с любой точки мира и в любое время?!
В третьих, за что платить, если есть готовые решения на гите, я к примеру использую пакет faceted-search, и я буду всегда знать что он под рукой и не зависит от левых сервисов!
git: github.com/k-samuel/faceted-search
Ну и сомневаюсь я в круглосуточной поддержке, потому что автор спит или заболел…
Может вы напишите плагин в modstore улучшающий поиск msearch и фильтрацию mfilter на основе этой библиотеки?
Никогда не сталкивался с улучшением поиска на модх, так что мои вопросы могут быть глупы и наивны.
С теперешней воблой гарантий доступа с любой точки мира нет. А сам сервер находиться на бегет и там с доступом вроде пока нормально было.
Не видел этого решения. Буду знать.
Так вроде круглосуточная поддержка не требуетя. Сервер как настроил так и работать будет. И настройки клиентов как настроил так и работает.
Честно говоря такая практика не очень мне лично нравится, но хорошо, что хоть какие-то решения ещё появляются для MODX
Таких модулей много: для работы с любой CRM, например.
А рассматривался вариант ManticoreSearch, который форк Sphinx github.com/manticoresoftware/manticoresearch?
все ещё jquery. я чистый js недолюбливаю.
Ну на MODX3 должен встать. Хотя не тестировал. Сейчас большинство компонентов идут на MODX3. Проблемы насколько понимаю начнуться на MODX3.2, когда обещают старую подгрузку классов отрубить.
Вообще поддержка MODX3 планируется, но сперва я хотел бы дождаться minishop3.
Да работает.
На модсторе компонент почти прошел модерацию, но есть одно замечание. в магазине не допутимы негативные отзывы о других компонентах. А я как делал facetsearch, потому что достали тупняки с mfilter2, так и написал в сравнении с ним. Теперь уже 3 дня сижу думаю что в описании компонента писать :-(.
Любой крупный магазин, с каталогом которого mFilter2 не справляется, наверняка хочет зависеть от стороннего сервиса. 2022 год нам показал, насколько это круто!
На рынке есть отличные сервисы подборок и рекомендаций, сервисы внешнего поиска с подключаемыми на сайт виджетами, CRM различные и т.п. И ничего… зависят от них. Съезжать никто не собирается.
mFilter2 в больших каталогах тормозит. Когда я делал FacetSearch я хотел в первую очередь преодалеть эту проблему. И во вторую очередь сделать что-то чтоб приносило доход. Вот и получился сторонний сервис.
Вы правы что сторонний сервис это не очень хорошо. Но elasticsearch требует 30гб диска и это не дешево. Сторонний сервис который использует куча сайтов будет дешевле. Единственно, что сейчас сервис использует только 1 сайт и я пока в проигреше по деньгам и загинаю цену.
В некотором обозримом времени, месяца 2-3, сделаю FacetSearchPro и если не хотят зависеть от стороннего сервиса, то можно будет поднять свой сервер с elasticsearch. Просто пока времени не хватает сделать.
Кстати как оказалось Sprinx дешевле содержать и я тут думаю не сделать ли компонент поиска, без сервиса, со Sprinx. Но как всегда это дело времени. Через месяца 3-4 может и появиться и этот компонент.
Я видел где-то на проекте что патч-пакет написали, ставится поверх mSearch2, заменяя часть функций. У меня реально были мысли найти автора этого патча (не смог) и попросить выложить на модстор продавать эти патчи)) Ну это нормально?)))
В итоге проблемы накапливаются, развития нет, решения проблем кочуют из проекта в проект, живёт в аналах гитхаба и личных блогов, и иногда не публикуются намеренно потому что «продукт не мой, я улучшаю а продавать будут другие, так не пойдет» (где-то встречал в паблике, можно найти при желании).
У нас в MODX много лет был крутейший поиск, каких не было в других системах, даже в битрикс, включая коммерческие решения там. Это был mserach2 и это было прекрасно. Но решения для других систем подтягиваются, теперь в той же битре есть нечто подобное, а мы должны бы идти дальше, но не можем, потому что идейно, с учетом архитектуры самого MODX, решения круче чем @Василий Наумкин действительно сложно придумать. А улучшать то что есть — некому, остаётся только вдохновляться…
В итоге по развитию поисковых возможностей на наших сайта, глобально мы стояли на месте.
Так что в целом очень здорово, что появляются другие решения с поиском. Внешние сервисы или нет, это уже другое дело. Главное что оно уже есть и уже работает. Сейчас будем тестировать, если FacetSearch действительно проявит себя как полезный и крутой продукт, подтянем ресурсы для кооперации с автором для организации более надежного решения, со SLA и прочими вещами. Это не первый его доп и «стартап» в экосистеме MODX. Лично я очень оценил инициативу!
Прошу @Василий Наумкин по возможности как-то повлиять на ситуацию с mSearch2/mFilter2 своим мощным авторитетом!
Конечно, мы не можем просить сделать его opensource и совесть не позволяет форкнуть старую версию, когда она была открытой, доработать и опубликовать, потому что блин этож отец-основатель и герой позитивных мемов в мире MODX написал и продаёт! :) Но как-то можно организовать развитие? На самом-то деле именно к mSearch2 надо прикручивать другие движки (elastic, redis, sphinx и т.п. и даже внешние сервисы (мультисерч, серчбустер, алголиа и др.) раз для php/mysql ничего лучше не придумано)
Пусть будет платным mSearch3 для MODX3
Пусть будет бесплатная платформа для дальнейшего развития и улучшения. Аля miniShop2. Вполне допускаю существование платных модулей улучшающих поиск и фильтрацию поверх mSearch2.
В общем верю — что проекту это пойдет на пользу.
Какие условия сейчас у текущего автора — не знаю. Но в любом случае, вы просто предлагаете подарить вам дополнение, приносящее деньги.
Большой вопрос — в курсе ли магазин и автор о больших проблемах этого компонента? Сколько там заявок в техподдержке?
Если из 100 купивших с проблемами обращаются 10 человек и ТП их успешно решает — нужно ли что-то менять? «Тем более эпоха MODX2 идет к завершению»
Мы при капитализме живём, как только что-то перестанет продаваться — станет бесплатным, потому что никому не нужно.
Я с конца 2020 года передал все свои дополнения другим людям и ничего не продаю. Уже 2 года как у меня просто нет платных дополнений, а те бесплатные, которые еще висят в магазине, просто никто не забрал.
Сейчас я отреагировал ровно на одну фразу, что «нельзя оскорблять mFilter2, поэтому не знаю что писать про FacetSearch» — это как-то провокационно получилось.
Это не значит что вот щас прям все побежали, но раз разговор зашел, хотелось бы уточнить. В modstore как раз недавно политику в отношении схожих по функционалу дополнений поправили, чтобы не было недобросовестной конкуренции, вроде всё в правильную сторону движется (и даже похоже на развитие!)
P.S. Формулировочка про «оскорблять mFilter2» полностью согласен, некорректная. Правильно что не пропустили.
Я выше писал, что это не совсем мой компонент — он был заказан и оплачен modstore, так же как Office, ms2Gallery и еще некоторые.
У компонента сменился разработчик, но как он распространялся за денежки через магазин, так и остался.
По поводу указанных проблем в топике — они все довольно узкие и дискуссионные. Например — поиск внутри alt изображений — а нужно ли искать? Проблемы совместимости с cityFields — а это точно в mSearch2 проблема?
У всех есть работа, когда-то я много времени уделял сообществу — и статьи писал, и дополнения разные. Сейчас у меня увеличилось количество ответственности, больше дел, которые нужно успеть сделать помимо работы. Так что внедрять такие нестандартные хотелки вряд ли буду.
А вот над совместимостью с MODX3 как раз я работаю и скоро будет новая версия, которую можно поставить на новый сайт.
Я провел много времени пытаясь ускорить mFilter2 и за это хотелось бы денег. Но сейчас уже все равно могу и просто подарить наработку.
Из последнего — вот. И это по верхам еще прошлись.
Давай, объясню банальности.
Василий написал mSearch2, какое-то время продавал его, отвечал на вопросы в техподдержке, исправлял, если что-то не работает, параллельно развивал компонент, выпускал новые фичи.
В какой-то момент Василий решил, что не хочет больше тратить на это время, хоть и получал за это какие-то деньги. Но так как от наличия поддержки зависит ещё и доход самого магазина, магазин решил нанять меня, чтобы выполнять обязательства перед покупателями.
Так вот, моя квалификация позволяет адекватно отвечать в техподдержке, помогать с настройкой, расширением, решать проблемы покупателей, выпускать небольшие исправления, если где-то что-то работает не так.
Я уже исправил пару мелких недочётов (но вообще компонент давно в стабильном состоянии, часто проблемы покупателей решаются правильной настройкой у них на сайте). Так же добавил пару фич по запросу (например, новое событие mse2OnGetWorkFields). Так же я работаю над совместимостью с MODX3 — иначе компонент просто перестанут покупать.
Но вот развивать компонент, переписывать JS, менять методику фильтрации, делать рефакторинг всего кода — это довольно большие задачи, которые особо на продажи не повлияют, да и, честно говоря, квалификации моей на эти задачи не хватит.
Если кто-то хочет и чувствует в себе силы исправить эти проблемы, переписать заново или что-то переделать — вы можете обратиться с предложением к администрации магазина. Прям так и пишите — Илья Уткин не справляется со своими задачами, не развивает компонент, вы из-за этого теряете деньги. Я могу сделать то-то и то-то. Уже есть вот такие наработки. Профинансируйте создание mSearch3 и будете получать в 2 раза больше денег. Я думаю, Леонид с удовольствием согласится и отберёт у меня компонент, передав его более достойному автору.
Вот и все.
Думаю, если сделать по-другому — начать с представления сервиса, тогда всем будет понятно и не будет недомолвок. То есть написать отдельную статью — «Представляю вашему вниманию сервис facetsearch.ru, который предоставляет мощности движка OpenSearch для использования на ваших сайтах.» и т.д. Тогда сам компонент будет просто модулем интеграции вашего сервиса. И вопросов к нему не будет. А будет чёткое понимание, кому он нужен.
А в дальнейшем вы сделаете подобные модули для Wordpress, Joomla, Битрикса и пр. — они будут использовать одно API, но уже никак не будут связаны с MODX.