Realtor

Дубликаты объектов в базе

Recommended Posts

При увеличении числа агентов в агентстве возникает вопрос удаления дубликатов объектов, т.к. многие объекты собираются из разных источников и разными агентами.
Есть предложение создать платное приложение по удалению дубликатов объектов, где можно будет формировать по каким критериям удалять объекты.

Например по номерам телефонов собственников, где это поле не равно нулю и встречается больше одного раза и объект относится к одному и тому же разделу и в базе оставлять объект который был занесен в базу раньше по времени, остальные удалить или перенести в архив.
Также предусмотреть функцию сравнения телефонов, чтобы тел. 1234567 равнялся телефону 7981234567, т.е. одни агенты записывают телефон собственника с международным кодом другие агенты без него, хотя это один и тот же телефон

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для etown.ru тоже такая проблема с дублями уже актуальна, думаем как решить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для etown предлагаю простукивать объявление на их актуальность  загруженных других сайтов, т.е. на наличие объекта.
В случае возврата ошибки 404 удалять этот объект с базы etown.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

чаще всего дублирование подразумевает копирование несколькими агентами фоток из одного источника. Многие порталы защищаются от повторов, сравнивая фото в объявлениях и их размер (на случай обрезки, чтобы не было похожим).  Фото с низкой графикой, например ниже 800Х600 dpi просто не принимаются. Работает замечательно, но есть и обратная сторона, например при размещении новостроек, где из фото можно приложить только эскиз дома и планировку. Информация поступает десятку агентств от застройщика и все размещают одно и то-же. Получается, что эскиз на 1 к.кв-ру пройдет а на 2-3 комнатные робот "посылает" или через час объявление блокируется фильтром. Размещать только 10 вариантов стройплощадки или планировки - не притягательно для клиента. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите 
Необходимо  в базе почистить объявления дубликаты условием для зачистки будут  одинаковые номера телефонов собственников и зачищать более поздние по дате. 

 

ALTER IGNORE TABLE `re_data` ADD UNIQUE(topic_id, city_id,room_count,floor,floor_count,phone) where active=1 AND phone != '' ;

Вот так будет правильно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите 

Необходимо  в базе почистить объявления дубликаты условием для зачистки будут  одинаковые номера телефонов собственников и зачищать более поздние по дате. 

 

ALTER IGNORE TABLE `re_data` ADD UNIQUE(topic_id, city_id,room_count,floor,floor_count,phone) where active=1 AND phone != '' ;

Вот так будет правильно?

Если в базе уже есть дубликаты по такому ключу, то он не будет создан, пока вы не почистите объявления от этих самых дублей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите, как почистить объявления дубли при совпадении номеров телефонов собственников или создать ключ при добавлении объявлений с exel в базу, чтобы не добавлялись при присутствии одинакового телефона

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Подскажите, как почистить объявления дубли при совпадении номеров телефонов собственников или создать ключ при добавлении объявлений с exel в базу, чтобы не добавлялись при присутствии одинакового телефона

Открываете phpmyadmin

Делаете запрос sql для выбора одинаковых записей

Сортируете по дате

Отмечаете все что лишнее

Удаляете

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Покажите пожалуйста запрос на примере поля phone 

 

Открываете phpmyadmin

Делаете запрос sql для выбора одинаковых записей

Сортируете по дате

Отмечаете все что лишнее

Удаляете

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Покажите пожалуйста запрос на примере поля phone 

select * from re_data where phone like '%тут пишем номер телефона%'

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вы меня неправильно поняли, мне нужно не показать дублирующие записи по определенному полю.

Мне нужно удалить дублирующие записи, например по полю phone, если их встречается два и более.то оставить один более ранний, последующие поступившие по дате удалить

select * from re_data where phone like '%тут пишем номер телефона%'

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вы меня неправильно поняли, мне нужно не показать дублирующие записи по определенному полю.

Мне нужно удалить дублирующие записи, например по полю phone, если их встречается два и более.то оставить один более ранний, последующие поступившие по дате удалить

Это только первый шаг.

После того как вы выбрали одинаковые записи, вам нужно отметить ненужные объявления и удалить их в phpmyadmin.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мы так и делалали на коленочке, но это было в прошлом веке. ) А в этом веке, что то изобрели получше?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Мы так и делалали на коленочке, но это было в прошлом веке. ) А в этом веке, что то изобрели получше?

Пока ничего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если сделать запрос ALTER IGNORE TABLE `re_data` ADD UNIQUE(phone)

 

Не пробовал, но, возможно, придется еще добавить ORDER BY date_added, что бы явно указать, какая запись будет "первой" при организации удаления лишних.

 

Чистка напрямую через БД немного плохо - у удаленных объявлений могут остаться картинки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Не пробовал, но, возможно, придется еще добавить ORDER BY date_added, что бы явно указать, какая запись будет "первой" при организации удаления лишних.

 

Чистка напрямую через БД немного плохо - у удаленных объявлений могут остаться картинки.

Точно , мусор в виде фото останется

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас