Александр Туниеков

Александр Туниеков

С нами с 19 декабря 2015; Место в рейтинге пользователей: #15
Александр Туниеков
20 октября 2022, 16:02
0
Я писал свой магаз тестовый с нуля и делал другую структуру данных
Поделись структурой плиз.
Александр Туниеков
20 октября 2022, 15:57
0
я тестировал 200к ресурсов с 20ю опциями
С 20 опциями или с 20 флажками?

У меня 400 флажков. А у тебя сколько?
у вас что-то не то с БД.
БД стандартное.
Александр Туниеков
20 октября 2022, 14:40
0
Manticore Search вариация Sphinx. Вчера пробовал установить OpenSearch вариацию ElasticSearch. Не поднял. Не справился с настройкой Docker :-(. Дальше без докера попробую, но пока некогда. Через неделю две пробовать буду.
Вариации Sphinx, ElasticSearch требуют vds или отдельного выделенного сервера или даже кластера серверов. Они прожорливы. ElasticSearch требует минимум 60гб на сервере. OpenSearch у меня не запускался пока размер диска на виртуалке до 100гб не поднял.
OpenSearch можно на https://aws.amazon.com/ru/opensearch-service/ подключить. Есть бесплатный тариф, но не понятно насколько его хватает. Платный тариф 1604,83 USD
Александр Туниеков
20 октября 2022, 05:20
+1
заранее просчитывать все возможные пересечения для фасетного фильтра
Тут одна проблема. Не знаю точную формулу, но знаю что кол-ко комбинаций пропорционально n!.. То есть, если кол-во флажков в фильтре около 200, то кол-во всех возможных комбинаций(ты назвал пересечения, но правильней комбинации. Если я правильно понял твою мысль :-)) около 200!.. Это 7886578673 6479050355 2363213932 1850622951 3597768717 3263294742 5332443594 4996340334 2920304284 0119846239 0417721213 8919638830 2576427902 4263710506 1926624952 8299311134 6285727076 3317237396 9889439224 4562145166 4240254033 2918641312 2742829485 3277524242 4075739032 4032125740 5579568660 2260319041 7032406235 1700858796 1789222227 8962370389 7374720000 0000000000 0000000000 0000000000 0000000000 00000 комбинаций. Не знаю как это работает в Битрих, но наверно до 200 флажков они не доходят. Максимум 50. И кеш по отзывам строится у них в течении 8 часов.
Тот же подход но для Redis habr.com/ru/company/oleg-bunin/blog/316652/
Там не тот же подход. Там вариация на тему массива значений опций, как в mFilter2, только в базе Redis.
Допустим, у нас в Redis-е для Samsung-а есть вот 4 товара — 201, 202, 203, 204, а для Philips — 301, 302, 303. Ключ, соответственно, содержит ID рубрики, фильтр и вариант фильтра. Если пользователь выбирает в панели фильтров Samsung, мы запрашиваем в Redis, получаем ID товаров, отдаем их в компонент списка товаров, и наш компонент отображает 4 товара. Если пользователь выбирает еще производителя Philips, мы и делаем два запроса в Redis, берем объединение этих множеств и, соответственно, показываем семь элементов в нашем каталоге.
Александр Туниеков
19 октября 2022, 06:54
0
Для поиска советую яндекс поиск для интернет магазинов
У яндекса нет фасетного поиска. То есть фильтров нет
Александр Туниеков
29 сентября 2022, 10:50
0
Выяви на каком именно плагине и его код сюда.
Александр Туниеков
29 сентября 2022, 10:40
0
можно. Вы наверно так и делали. Я просто подсказал с чем может быть связана ошибка. Что именно у вас мне не известно
Александр Туниеков
29 сентября 2022, 10:11
0
Так плагин не надо было создовать. Надо было проверить что похожего плагина нет
Александр Туниеков
26 сентября 2022, 20:48
0
resourceMap либо не генерируется либо его что-то прибивает. Не генерируется значит что то не так с модекс. Что-то прибивает вот здесь modx.pro/solutions/22267 рекомендуют плагин который прибивает
Костыль OnMODXInit ниже может послужить хорошим решением данной проблемы, и будет надёжным подспорьем довольно долгое время.

//  Resource map patch to reduce parse time
  if( ! empty( $modx->context->resourceMap ) ) {
      $options = [ xPDO::OPT_CACHE_KEY => 'context_settings/' . $modx->context->key ];
      if( $val = $modx->getCacheManager()->get( 'context', $options ) ) {
          $val[ 'resourceMap' ] = [];
          $modx->getCacheManager()->set( 'context', $val, 0, $options );
      }
  }
  //--//
Искушённый читатель предложит расширить стандартный класс менеджера кеширования и подменить его. На мой взгляд избавиться от плагина потом проще
Александр Туниеков
26 сентября 2022, 15:39
0
Ну напрямую я редко пишу. Так что не делал и с проблемами не сталкивался. Возможно в этом ничего страшного нет.
А вот через API сталкивался с тем что импорт тупит. Но мне через API проще
Александр Туниеков
26 сентября 2022, 15:03
0
Мнда… не зная ваш скилл пнуть и еще в верном направлении.
Для импорта из эксель надо знать структуру хранения данных в модэкс минишоп. Затем как читать эксель в php. Это PHPOffice или конвертировать эксель в csv и читать в php csv файл. Затем эти данные раскидываешь по полям базы данных с помощью API MODX либо напрямую в базу писать(не рекомендую)
Александр Туниеков
26 сентября 2022, 14:55
0
Я сталкивался хостер порты блокирует.
Александр Туниеков
26 сентября 2022, 14:50
0
в файле \core\cache\context_settings\web\context.cache.php часть массива resourceMap присутствует?
Только метод научного тыка. Смотреть по коду что вообще происходит. Пробовать убирать добавлять что-то и так пока не поймешь в чем причина.
Или modx переставить или сайт заного переписать с обновленным модекс
Александр Туниеков
25 сентября 2022, 17:44
0
файл кеша \core\cache\context_settings\web\context.cache.php
Александр Туниеков
25 сентября 2022, 16:49
0
$resourceMap это карта ресурсов modx. Она генерируется при первой инициализации контекста modx и сохраняется в кеш.
Ошибка значит, что $resourceMap пустая. Проверьте кеш modx. Что там права на запись есть. Почистите кеш. И проверьте чтоб плагины $resourceMap не прибивали. Это иногда рекомендуют на больших сайтах.
Александр Туниеков
23 сентября 2022, 15:35
0
@Артур после вчерашнего разбора mapFilter не сильно выигрывает у mFilter2. Так что его разработка обратно повисла.
Вообще участие в разработке Минишопа меня не сильно интересует. Он меня и в теущем виде устраивает, но вот фильтры для Минишопа интересуют. С ними проблемы есть.
mSearch2 платный компонент и дорабатывать его, чтоб деньги шли левому дяде меня обламывает :-).
Думаю, что участие в разработке бесплатных фильтров для Минишопа, мне интересно. Есть только одно препятствие. Я, обычно, пишу на jQuery. И на ванильный JS не спешу переходить. На jQuery удобней писать и есть мого примеров в интернете. Но если перед глазами будут лучшие примеры кода на ванильном JS, то писать на нем, конечно, смогу.
Примете в комманду? :-)
Александр Туниеков
22 сентября 2022, 08:39
0
Решил описать кеширование mFilter2. Начал здесь https://modx.pro/development/23310
Александр Туниеков
21 сентября 2022, 20:20
0
Ну тогда надо архитектуру как-то менять.
TV rubrika со списком множественного выбора (там несколько значений вида имя1==1||имя2==2||имя3==3) храниться в базе как текст например такой «1||3||13». И ни как запросом LIKE не отличишь 1 от 13.
Нужно список множественного выбора хранить как отдельные значения в таблице. Например tvsuperselect храниться в 2 таблицах и как текст «1||3||13» и в отдельной таблице отдельные значения. Я не помню как именно.
Если использовать tvsuperselect, то, наверно, можно в pdoPage подцепить 2-ю таблицу и написать что-то вроде
[[!pdoPage?
        &parents=`4`
        &loadModels=`tvsuperselect`
        &leftJoin=`{"2-таблица":....}`
        &groupby=`modResource.id`
        &where=`{"2-таблица.value":[[*option]]}`
        &tpl=`RowTpl`
]]