![]() |
в бд много одинаковых новостей (dle)
здравствуйте . имеется сайт на дле где много одинаковых новостей. есть что нибудь что может решить эту проблему? заранее спасибо
|
Цитата:
content - текст новости. |
Цитата:
|
Хм. Спасибо но немного не то. Там не дубликаты одной новости. Например-
Новость1 (и в бд еще допустим 5 таких новостей с таким же названием) Новость2 (и в бд еще 5 таких новостей с таким же названием) Нужно удалить дубликаты и чтоб осталась 1 оригинальная. Новостей всего около 30 000. Вручную нереально перебирать |
конечно я не имею понятия какая структура таблицы но все же. делать будем в 3 этапа=)
если заголовки статей хранаяться в отделном столбце то зб, тоесть структура такова: id-label-text ну и еще дх полей... вот если label это заголовок статьи, и они встречаються не уникальные то делаем так: создаем 1 временную табличку, в 1 полем, назовем id, таблу назовем ids копируем в нее ид уникальных статей insert into ids (id) SELECT DISTINCT id FROM dle_news GROUP BY label а потом delete from dle_news where id not in (select id from ids) если не понятно стукни в аську объясню=) |
вот хороший пост по теме
_http://www.mojbred.com/706.html |
ап. проблема до сих пор не решена. еще раз повторюсь что я не знаю ид уник новостей. их очень много.
зы бд уже 60к новостей и еще . например -новость №1 -новость №1 2008 такие тоже желательно бы поудалять. я в полном недоумении думаю что только можно решить этот вопрос через поиск определенногопроцента совпадения в названиях.(Т.е. если в названии новости совпадают 3-4 слова и более, то добавит эти новости в список удаления, после чего я уже сам посмотрю, что в этом списке надо удалить,а что нет...) но к сожалению данную идею реализовать не могу т.к не мой уровень( заранее благодарен |
Ну создай скрипт который будет выводить дубликаты
select * from dle_post where title LIKE '%новость №1%' далее выбираешь что удалить и удаляешь DELETE FROM dle_post WHERE id = (id новости которую надо удалить) |
мазахизм,но в дле есть функция замены быстрого текста во всей дле... найди где именно выполняеться код и вместо замены скажи что бы удалял все похожее....
|
мля..вы не понимаете
вот наглядный пример _pswarez.net/index.php?newsid=54997 - новость Перевозчик 3 / Transporter 3 (2008) смотрим поле Другие новости по теме: посмотрите чем отличаются от этой Перевозчик 3 Transporter 3 (2008) TS Перевозчик 3 / Transporter 3 (2008) DVDRip+700Mb Перевозчик 3 / Transporter 3 (2008) DVDRip Перевозчик 3. Transporter 3 2008/TS Перевозчик 3 / Transporter 3 (2008) DVDRip и это только 5 первых похожих. думаю там их гораздо больше и подобных новостей много. фильмы и софт. и ПОЭТОМУ ИД уникальных новостей не знаю. прочитайте еще раз про идею процентного соотношения. |
Можно написать хп.
Получится нечто вродь такого Код:
delimiter ;;Код:
call cl()Объясним некоторые специфические моменты:
Может код неоптимален и тд и тп - но он будет работать :) Если найдешь что оптимизировать - оптимизируй. P.S. На достаточно большой базе при слабой машине - вполне можешь повесить субд. Или выполнение может занять продолжительное время. |
ИМХО, легче набрать пяток модераторов, которые разберут эти авгиевы конюшни, а потом будут следить, чтобы не выкладывали по 10 раз одно и то же
|
Gifts автоматизция- великая вещь. Главное с умом подходить :)
Можно на стройке и кирпичи на 30-й этаж на горбу таскать - однако ж для чего то придумали подъемные краны, блоки и другие хитроумные приспособления =) |
ну ну... однажды что-то не так пойдет, что то не так удалится из базы.. лучше пусть модеры ручками поработают.. тем более что не слишком сложная работа.
хотя не спорю что автоматизация - это хорошая вещь(= |
Цитата:
|
А лучше при создании новости проверять есть ли похожие
|
Цитата:
дык они в конце слеш допишут и все((( |
Цитата:
Можно впринципе даж триггер на добавление в данную таблицу повесть - и в нем проверять. Но что лучше конечн виднее тому, кто проектировал систему :) |
Цитата:
|
VDShark А что делать с разными версиями программы? Например PHP 5.2.6, PHP 5.2.8 Будут считаться одинаковыми, тоже самое с фильмами - Перевозчик ТС, Перевозчик DVDRip, Перевозчик HDRip Будут тоже беспощадно удаляться. Любое удаление без участия человека будет обречено удалить не то и не так.
Если же хочется как-то автоматизировать, то стоит присмотреться к ПХПшной функции нахождения расстояния левенштейна и к такой ее реализации: PHP код:
|
Gifts, интересно...
А почему 25? |
Isis 25% это уже достаточно похожие строки, хотя в общем-то число взял от балды, посмотрев что пример с названиями перевозчика похожи на 65%. Если убрать все числа и спец знаки из всех строк, то точность наверно увеличитя
Все это сугубо измышления, пока не тестил, завтра наверно попробую |
| Время: 02:41 |