[DoubleCheck] - Поиск и исправление дублей
И снова всем привет! Эта заметка будет еще короче предыдущей :). В общем все мы знаем и по своему боремся с проблемой после парсинга и/или импорта из говноисточников дублей товаров, компонент ищет дубли по названию товаров (pagetitle) и удаляет эти дубли. Но не просто удаляет, первому вхождению он дает все виртуальные категории удаленных товаров (проще говоря отмечает категории на вкладке товара «Категории»).
P.s. вот так и получается, для сложных компонентов описание в три строки, а для всяких элементарных выходят целые статьи :)
Исходники
Modstore
Использование
- Пакеты -> miniShop2 -> DoubleCheck
- Проверяем дубли, а после запускаем автоматическое или ручное исправление
P.s. вот так и получается, для сложных компонентов описание в три строки, а для всяких элементарных выходят целые статьи :)
Исходники
Modstore
Поблагодарить автора
Отправить деньги
Комментарии: 22
Парни, простите за спам своими дополнениями, еще парочку за следующие несколько дней и я снова пропаду на год :)
Прекрасно, спасибо.
mSync частенько лупит дубли, видимо создает объекты не через процессоры (я не проверял).
Полезная штука
mSync частенько лупит дубли, видимо создает объекты не через процессоры (я не проверял).
Полезная штука
Вообще ни разу не лупит. Просто настраивать необходимо
Не совсем понял.
2. Разве модекс позволяет сохранить два ресурса с идентичными названиями? Как могут возникнуть два идентичных pagetitle? Или имеется ввиду похожие названия? Но тогда вопросов еще больше, что есть такое «похожие» и как определять степень схожести. Если на сайте два ресурса «Товар 1» и «Товар 1-1» какой-то из них автоматом будет удален?
ищет дубли по названию товаров (pagetitle) и удаляет1. По-моему дублями с точки зрения поисковых систем считаются не страницы с одинаковым pagetitle, этот процесс сложнее чем просто одинаковое название. Да и плюс, как я сталкиваюсь в практике, разные разработчики по разному используют поле pagetitle, кто-то отправляет его в h1 на страницу, а кто-то в title
2. Разве модекс позволяет сохранить два ресурса с идентичными названиями? Как могут возникнуть два идентичных pagetitle? Или имеется ввиду похожие названия? Но тогда вопросов еще больше, что есть такое «похожие» и как определять степень схожести. Если на сайте два ресурса «Товар 1» и «Товар 1-1» какой-то из них автоматом будет удален?
Позволю себе вклиниться.
1) Скорее всего автор имеет ввиду не дубли «с точки зрения поисковых систем» а дубли с точки зрения modx и тут все гораздо проще.
2) Позволяет, если у них разный алиас, просто создайте два ресурса с pagetitle = modx.pro, но при этом с разными алиасами и все у вас будет отлично.Так-же под похожими подразумевается ===, в вашем примере «Товар 1» !== «Товар 1-1», никакой из них не будет удален.
Хотя возможно я не прав и просто не понял концепцию этого дополнения.
1) Скорее всего автор имеет ввиду не дубли «с точки зрения поисковых систем» а дубли с точки зрения modx и тут все гораздо проще.
2) Позволяет, если у них разный алиас, просто создайте два ресурса с pagetitle = modx.pro, но при этом с разными алиасами и все у вас будет отлично.Так-же под похожими подразумевается ===, в вашем примере «Товар 1» !== «Товар 1-1», никакой из них не будет удален.
Хотя возможно я не прав и просто не понял концепцию этого дополнения.
Позволяет, если у них разный алиассовершенно верно, но в 99% случаев алиас формируется автоматически по pagititle, а значит если одинаковое название то и одинаковый алиас.
Ну да ладно, это не важно. Я просто тоже не совсем понимаю концепцию этого дополнения.
Дополнение не об этом)
Вот вам два живых кейса для которых это дополнение писалось и отлично себя показало
1) Парсим сайт, при парсинге записывать в базу через процессоры — самоубийство, по этому пишем в базу прямыми запросами, соответственно uri и alias генерируем уже по окончанию парсинга когда у нас все товары будут в базе данных. Так вот, суть проблемы в том, что на сайте, который мы парсим одни и те же товары могут быть в разных категориях, соответственно у нас это физически разные товары, с одинаковым названием. Что нужно сделать? Правильно, удалить дубли, а основному товару назначить виртуальные категории удаленных товаров, что и делает дополнение. Я уже молчу о том что у «источников» помимо того что товары также могут быть в виртуальных категориях, у них очень часто встречаются еще и физические дубли
2) Часто бывает что поставщики — раздолбаи и база данных, aka выгрузка, у них заполнена через жопу и с разными артикулами бывает по нескольку десятков штук одинаковых позиций
Вообще дополнение для тех, кто знает зачем оно нужно и сталкивался с вышеописанными проблемами)
Вот вам два живых кейса для которых это дополнение писалось и отлично себя показало
1) Парсим сайт, при парсинге записывать в базу через процессоры — самоубийство, по этому пишем в базу прямыми запросами, соответственно uri и alias генерируем уже по окончанию парсинга когда у нас все товары будут в базе данных. Так вот, суть проблемы в том, что на сайте, который мы парсим одни и те же товары могут быть в разных категориях, соответственно у нас это физически разные товары, с одинаковым названием. Что нужно сделать? Правильно, удалить дубли, а основному товару назначить виртуальные категории удаленных товаров, что и делает дополнение. Я уже молчу о том что у «источников» помимо того что товары также могут быть в виртуальных категориях, у них очень часто встречаются еще и физические дубли
2) Часто бывает что поставщики — раздолбаи и база данных, aka выгрузка, у них заполнена через жопу и с разными артикулами бывает по нескольку десятков штук одинаковых позиций
Вообще дополнение для тех, кто знает зачем оно нужно и сталкивался с вышеописанными проблемами)
Я вас понял.
Я вообще негативно отношусь к парсингу чужих сайтов, но это лично мои «тараканы».
Но если все же приходится это делать, мы не делаем это напрямую в базу, а в экселевский файл, затем контент менеджеры используя формулы экселя удаляют дубли и все ненужное.
Я вообще негативно отношусь к парсингу чужих сайтов, но это лично мои «тараканы».
Но если все же приходится это делать, мы не делаем это напрямую в базу, а в экселевский файл, затем контент менеджеры используя формулы экселя удаляют дубли и все ненужное.
Ну чаще всего парсят довольно большое количество товаров предположим это 50 тысяч, что довольно среднее число в рамках парсеров, даже если на проверку будет уходить всего минута — это 50000 минут это 833 часа или 34 дня без еды и сна ну или 104 будничных дня по 8 часов, даже при минимальной зарплате менеджера в 30 тысяч это 90 тысяч только на проверку каталога, ОДНОГО парсинга. Хотел бы я посмотреть на вашего «эффективного» менеджера который согласился бы отдать 3 месяца работы и 90к вместо автоматизации
Ну во первых вы живете в каких-то «мажорных» местах и если в ваших краях 30 000 это минималка то мои поздравления.
Но дело не в этом, а в том, что если менеджер умеет работать с Ексель на высоком уровне, то проверка 50 000 товаров проходит за 5 минут.
Но дело не в этом, а в том, что если менеджер умеет работать с Ексель на высоком уровне, то проверка 50 000 товаров проходит за 5 минут.
Но дело не в этом, а в том, что если менеджер умеет работать с Ексель на высоком уровне, то проверка 50 000 товаров проходит за 5 минут.Ок, может расскажите мне как в эксель удалить все дубли, а у первого вхождения присвоить
виртуальные категории удаленных дублей? А то может мы тут все фигней страдаем и вообще половину компонентов можно сделать в экселе
Я не умею настолько хорошо работать с этим инструментом, но поверьте это возможно и очень быстро. Ексель неимоверно мощная программа для обработки данных.
Я не говорю что ваш компонент плох или не нужен.
Я честно признаюсь, впервые от вас сегодня узнал, что кто-то парсит сайты сразу в базу, а потом борется с дублями. Думал что все работают также с экселевскими файлами. Век живи — век учись.
Я не говорю что ваш компонент плох или не нужен.
Я честно признаюсь, впервые от вас сегодня узнал, что кто-то парсит сайты сразу в базу, а потом борется с дублями. Думал что все работают также с экселевскими файлами. Век живи — век учись.
Скажите, а на основании чего ваша программа принимает решение, в какую «виртуальную» директорию положить дубль?
Или что, при парсинге сайта на вашем сайте создается и точная копия категорий и подкатегорий как на сайте доноре?
Или что, при парсинге сайта на вашем сайте создается и точная копия категорий и подкатегорий как на сайте доноре?
а на основании чего ваша программа принимает решение, в какую «виртуальную» директорию положить дубльДубль ни в какую директорию не кладется, дубль удаляется, виртуальная директория назначается первому вхождению, на основании директории удаленного товара.
Как ваша программа определяет, какая категория для него реальная?Никак, а это в целом играет какую то роль для посетителя?) Ему что в той покажется товар, что в той
Получается что один ковер будет утерян при парсинге? Ведь программа один из ковром посчитает дублем.Именно, но как я уже ниже писал, в след. обновлении увидим настройку поля сравнения
Последнее занудство с моей стороны и иду спать)
Никак, а это в целом играет какую то роль для посетителя?)Для посетителя — нет. Для СЕО — большая разница где физически будет товар. Ведь от этого как минимум зависит URL и уровень вложенности страницы.
К примеру есть на сайте доноре категория — ковры. в ней товар Ковер персидский. Есть категория — Для дома. В ней товар — Ковер персидский.
Для начала предположим что это один товар — идентичный.
Как ваша программа определяет, какая категория для него реальная?
А как понимает какая категория для него виртуальна?
А другой вариант. Это два разных совершенно ковра. Просто и тот и тот персидский и назвали их — Ковер персидский. Получается что один ковер будет утерян при парсинге? Ведь программа один из ковром посчитает дублем.
Для начала предположим что это один товар — идентичный.
Как ваша программа определяет, какая категория для него реальная?
А как понимает какая категория для него виртуальна?
А другой вариант. Это два разных совершенно ковра. Просто и тот и тот персидский и назвали их — Ковер персидский. Получается что один ковер будет утерян при парсинге? Ведь программа один из ковром посчитает дублем.
А что плохого в парсинге? Есть поставщики, которые предоставляют каталог продукции, если клиент становится их дилером, то ему необходимо спарсить весь каталог к себе на сайт. Так, собственно, и появляется задача на парсинг товаров. Как уже было сказано, если каталог хренового качества — нужно подчищать дубли и все косяки, чтобы у клиента было не абы что, а нормальный каталог. Имхо, автоматизированное и проверенное решение в разы выгоднее, удобнее, быстрее и надежнее любого менеджера, а еще платить никому не надо.
Вам наверное везет с заказчиками и это сплошь порядочные предприниматели)
В моей практике обычно так — если нужно парсить сайт, это означает что хотят перепродавать чужие товары без спроса с наценкой. И наверное в этом нет ничего ужасного, но меня почему-то с детства приучили что это не хорошо и не честно, поэтому я и называю это моими «тараканами»)
Ну и во-вторых, если поставщик хочет чтобы его товаром пользовались, он придумает удобный способ подачи этого товара — сделает какой-то файл с товаров в xml или json или разработает api для получения товаров. Если этого нет, то скорее всего сайт не хочет, чтобы его товары кто-то «крал».
В моей практике обычно так — если нужно парсить сайт, это означает что хотят перепродавать чужие товары без спроса с наценкой. И наверное в этом нет ничего ужасного, но меня почему-то с детства приучили что это не хорошо и не честно, поэтому я и называю это моими «тараканами»)
Ну и во-вторых, если поставщик хочет чтобы его товаром пользовались, он придумает удобный способ подачи этого товара — сделает какой-то файл с товаров в xml или json или разработает api для получения товаров. Если этого нет, то скорее всего сайт не хочет, чтобы его товары кто-то «крал».
сделает какой-то файл с товаров в xml или json или разработает api для получения товаров. Если этого нет, то скорее всего сайт не хочет, чтобы его товары кто-то «крал».Ох, мало вы поставщиков видели, мало :)
Хорошо если кто — то, когда — то делал поставщику каких нибудь условных столов для лабораторных целей YML для яндекс маркета, а зачастую поставщики сами напрямую говорят аля «Вы вторые кто к нам обратился с такой просьбой, первые не придумали ничего лучше, как парсить наш сайт, так может и вы будите просто парсить?»
А почему не по alias? Можно ли установить свой критерий?
github.com/pavel-one/DoubleCheck/issues/1 в будущих обновлениях можно будет, сейчас пока нет, но вы всегда можете помочь с разработкой, дополнение бесплатно
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.