[DoubleCheck] - Поиск и исправление дублей

И снова всем привет! Эта заметка будет еще короче предыдущей :). В общем все мы знаем и по своему боремся с проблемой после парсинга и/или импорта из говноисточников дублей товаров, компонент ищет дубли по названию товаров (pagetitle) и удаляет эти дубли. Но не просто удаляет, первому вхождению он дает все виртуальные категории удаленных товаров (проще говоря отмечает категории на вкладке товара «Категории»).





Использование



  1. Пакеты -> miniShop2 -> DoubleCheck
  2. Проверяем дубли, а после запускаем автоматическое или ручное исправление
Собственно все :)

P.s. вот так и получается, для сложных компонентов описание в три строки, а для всяких элементарных выходят целые статьи :)

Исходники
Modstore
Pavel Zarubin
03 декабря 2019, 20:37
modx.pro
3
2 155
+17
Поблагодарить автора Отправить деньги

Комментарии: 22

Pavel Zarubin
03 декабря 2019, 20:38
+5
Парни, простите за спам своими дополнениями, еще парочку за следующие несколько дней и я снова пропаду на год :)
Павел Бигель
03 декабря 2019, 22:58
0
Прекрасно, спасибо.
mSync частенько лупит дубли, видимо создает объекты не через процессоры (я не проверял).
Полезная штука
    Михаил
    05 декабря 2019, 12:26
    0
    Вообще ни разу не лупит. Просто настраивать необходимо
    Александр Мельник
    04 декабря 2019, 08:50
    0
    Не совсем понял.
    ищет дубли по названию товаров (pagetitle) и удаляет
    1. По-моему дублями с точки зрения поисковых систем считаются не страницы с одинаковым pagetitle, этот процесс сложнее чем просто одинаковое название. Да и плюс, как я сталкиваюсь в практике, разные разработчики по разному используют поле pagetitle, кто-то отправляет его в h1 на страницу, а кто-то в title
    2. Разве модекс позволяет сохранить два ресурса с идентичными названиями? Как могут возникнуть два идентичных pagetitle? Или имеется ввиду похожие названия? Но тогда вопросов еще больше, что есть такое «похожие» и как определять степень схожести. Если на сайте два ресурса «Товар 1» и «Товар 1-1» какой-то из них автоматом будет удален?
      srs
      srs
      04 декабря 2019, 10:13
      0
      Позволю себе вклиниться.
      1) Скорее всего автор имеет ввиду не дубли «с точки зрения поисковых систем» а дубли с точки зрения modx и тут все гораздо проще.
      2) Позволяет, если у них разный алиас, просто создайте два ресурса с pagetitle = modx.pro, но при этом с разными алиасами и все у вас будет отлично.Так-же под похожими подразумевается ===, в вашем примере «Товар 1» !== «Товар 1-1», никакой из них не будет удален.
      Хотя возможно я не прав и просто не понял концепцию этого дополнения.
        Александр Мельник
        04 декабря 2019, 10:41
        0
        Позволяет, если у них разный алиас
        совершенно верно, но в 99% случаев алиас формируется автоматически по pagititle, а значит если одинаковое название то и одинаковый алиас.
        Ну да ладно, это не важно. Я просто тоже не совсем понимаю концепцию этого дополнения.
          Pavel Zarubin
          04 декабря 2019, 11:10
          +2
          Дополнение не об этом)
          Вот вам два живых кейса для которых это дополнение писалось и отлично себя показало

          1) Парсим сайт, при парсинге записывать в базу через процессоры — самоубийство, по этому пишем в базу прямыми запросами, соответственно uri и alias генерируем уже по окончанию парсинга когда у нас все товары будут в базе данных. Так вот, суть проблемы в том, что на сайте, который мы парсим одни и те же товары могут быть в разных категориях, соответственно у нас это физически разные товары, с одинаковым названием. Что нужно сделать? Правильно, удалить дубли, а основному товару назначить виртуальные категории удаленных товаров, что и делает дополнение. Я уже молчу о том что у «источников» помимо того что товары также могут быть в виртуальных категориях, у них очень часто встречаются еще и физические дубли

          2) Часто бывает что поставщики — раздолбаи и база данных, aka выгрузка, у них заполнена через жопу и с разными артикулами бывает по нескольку десятков штук одинаковых позиций

          Вообще дополнение для тех, кто знает зачем оно нужно и сталкивался с вышеописанными проблемами)
            Александр Мельник
            04 декабря 2019, 18:51
            0
            Я вас понял.
            Я вообще негативно отношусь к парсингу чужих сайтов, но это лично мои «тараканы».
            Но если все же приходится это делать, мы не делаем это напрямую в базу, а в экселевский файл, затем контент менеджеры используя формулы экселя удаляют дубли и все ненужное.
              Pavel Zarubin
              04 декабря 2019, 20:21
              0
              Ну чаще всего парсят довольно большое количество товаров предположим это 50 тысяч, что довольно среднее число в рамках парсеров, даже если на проверку будет уходить всего минута — это 50000 минут это 833 часа или 34 дня без еды и сна ну или 104 будничных дня по 8 часов, даже при минимальной зарплате менеджера в 30 тысяч это 90 тысяч только на проверку каталога, ОДНОГО парсинга. Хотел бы я посмотреть на вашего «эффективного» менеджера который согласился бы отдать 3 месяца работы и 90к вместо автоматизации
                Александр Мельник
                04 декабря 2019, 20:33
                0
                Ну во первых вы живете в каких-то «мажорных» местах и если в ваших краях 30 000 это минималка то мои поздравления.
                Но дело не в этом, а в том, что если менеджер умеет работать с Ексель на высоком уровне, то проверка 50 000 товаров проходит за 5 минут.
                  Pavel Zarubin
                  04 декабря 2019, 20:40
                  +1
                  Но дело не в этом, а в том, что если менеджер умеет работать с Ексель на высоком уровне, то проверка 50 000 товаров проходит за 5 минут.
                  Ок, может расскажите мне как в эксель удалить все дубли, а у первого вхождения присвоить
                  виртуальные категории удаленных дублей? А то может мы тут все фигней страдаем и вообще половину компонентов можно сделать в экселе
                    Александр Мельник
                    04 декабря 2019, 20:45
                    0
                    Я не умею настолько хорошо работать с этим инструментом, но поверьте это возможно и очень быстро. Ексель неимоверно мощная программа для обработки данных.
                    Я не говорю что ваш компонент плох или не нужен.
                    Я честно признаюсь, впервые от вас сегодня узнал, что кто-то парсит сайты сразу в базу, а потом борется с дублями. Думал что все работают также с экселевскими файлами. Век живи — век учись.
                      Александр Мельник
                      04 декабря 2019, 20:47
                      0
                      Скажите, а на основании чего ваша программа принимает решение, в какую «виртуальную» директорию положить дубль?
                      Или что, при парсинге сайта на вашем сайте создается и точная копия категорий и подкатегорий как на сайте доноре?
                        Pavel Zarubin
                        04 декабря 2019, 20:57
                        0
                        а на основании чего ваша программа принимает решение, в какую «виртуальную» директорию положить дубль
                        Дубль ни в какую директорию не кладется, дубль удаляется, виртуальная директория назначается первому вхождению, на основании директории удаленного товара.

                        Как ваша программа определяет, какая категория для него реальная?
                        Никак, а это в целом играет какую то роль для посетителя?) Ему что в той покажется товар, что в той

                        Получается что один ковер будет утерян при парсинге? Ведь программа один из ковром посчитает дублем.
                        Именно, но как я уже ниже писал, в след. обновлении увидим настройку поля сравнения
                          Александр Мельник
                          04 декабря 2019, 21:03
                          0
                          Последнее занудство с моей стороны и иду спать)
                          Никак, а это в целом играет какую то роль для посетителя?)
                          Для посетителя — нет. Для СЕО — большая разница где физически будет товар. Ведь от этого как минимум зависит URL и уровень вложенности страницы.
                      Александр Мельник
                      04 декабря 2019, 20:52
                      0
                      К примеру есть на сайте доноре категория — ковры. в ней товар Ковер персидский. Есть категория — Для дома. В ней товар — Ковер персидский.
                      Для начала предположим что это один товар — идентичный.
                      Как ваша программа определяет, какая категория для него реальная?
                      А как понимает какая категория для него виртуальна?

                      А другой вариант. Это два разных совершенно ковра. Просто и тот и тот персидский и назвали их — Ковер персидский. Получается что один ковер будет утерян при парсинге? Ведь программа один из ковром посчитает дублем.
                  Артем
                  05 декабря 2019, 01:33
                  +3
                  А что плохого в парсинге? Есть поставщики, которые предоставляют каталог продукции, если клиент становится их дилером, то ему необходимо спарсить весь каталог к себе на сайт. Так, собственно, и появляется задача на парсинг товаров. Как уже было сказано, если каталог хренового качества — нужно подчищать дубли и все косяки, чтобы у клиента было не абы что, а нормальный каталог. Имхо, автоматизированное и проверенное решение в разы выгоднее, удобнее, быстрее и надежнее любого менеджера, а еще платить никому не надо.
                    Александр Мельник
                    05 декабря 2019, 09:46
                    0
                    Вам наверное везет с заказчиками и это сплошь порядочные предприниматели)
                    В моей практике обычно так — если нужно парсить сайт, это означает что хотят перепродавать чужие товары без спроса с наценкой. И наверное в этом нет ничего ужасного, но меня почему-то с детства приучили что это не хорошо и не честно, поэтому я и называю это моими «тараканами»)
                    Ну и во-вторых, если поставщик хочет чтобы его товаром пользовались, он придумает удобный способ подачи этого товара — сделает какой-то файл с товаров в xml или json или разработает api для получения товаров. Если этого нет, то скорее всего сайт не хочет, чтобы его товары кто-то «крал».
                      Pavel Zarubin
                      05 декабря 2019, 13:48
                      0
                      сделает какой-то файл с товаров в xml или json или разработает api для получения товаров. Если этого нет, то скорее всего сайт не хочет, чтобы его товары кто-то «крал».
                      Ох, мало вы поставщиков видели, мало :)
                      Хорошо если кто — то, когда — то делал поставщику каких нибудь условных столов для лабораторных целей YML для яндекс маркета, а зачастую поставщики сами напрямую говорят аля «Вы вторые кто к нам обратился с такой просьбой, первые не придумали ничего лучше, как парсить наш сайт, так может и вы будите просто парсить?»
          srs
          srs
          04 декабря 2019, 10:04
          0
          А почему не по alias? Можно ли установить свой критерий?
            Pavel Zarubin
            04 декабря 2019, 11:11
            +2
            github.com/pavel-one/DoubleCheck/issues/1 в будущих обновлениях можно будет, сейчас пока нет, но вы всегда можете помочь с разработкой, дополнение бесплатно
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            22