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

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





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



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

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

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

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

Pavel Zarubin
03 декабря 2019, 20:38
+5
Парни, простите за спам своими дополнениями, еще парочку за следующие несколько дней и я снова пропаду на год :)
    Sergey
    03 декабря 2019, 20:52
    0
    Павел Бигель
    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