ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

17.12.2008, 19:27
|
|
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме: 804931
Репутация:
526
|
|
Можно написать хп.
Получится нечто вродь такого
Код:
delimiter ;;
CREATE PROCEDURE cl()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE s VARCHAR(100);
DECLARE cur CURSOR FOR SELECT DISTINCT SUBSTRING_INDEX(`title`,' ',2) FROM `table`;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur;
REPEAT
FETCH cur INTO s;
DELETE FROM `table` WHERE `id` IN (SELECT `t1`.`id` FROM (SELECT * FROM `table`) as `t1` WHERE `t1`.`title` LIKE CONCAT(s,'%') AND `id` <> (SELECT `t2`.`id` FROM (SELECT * FROM `table`) as `t2` WHERE `t2`.`title` LIKE CONCAT(s,'%') LIMIT 1));
UNTIL done END REPEAT;
END;;
Вызывается хп так:
где cl - эт имя нашей поцедуры.
Объясним некоторые специфические моменты:
- SUBSTRING_INDEX(`title`,' ',2) - это по сути то, сколько ведущих слов нам брать. Слова разделяются пробелами. Например если этот код применить к строке "Перевозчик 3 Transporter 3 (2008) TS" получим "Перевозчик 3"
- FROM (SELECT * FROM `table`) - такой финт ушами понадобился всвязи с некоторыми особенностями мускула
- CONCAT(s,'%') - соответственно объединяем получанную нами из курсора строку со знаком % для составления шаблона.
Может код неоптимален и тд и тп - но он будет работать  Если найдешь что оптимизировать - оптимизируй.
P.S. На достаточно большой базе при слабой машине - вполне можешь повесить субд. Или выполнение может занять продолжительное время.
|
|
|

17.12.2008, 19:38
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
ИМХО, легче набрать пяток модераторов, которые разберут эти авгиевы конюшни, а потом будут следить, чтобы не выкладывали по 10 раз одно и то же
|
|
|

17.12.2008, 19:44
|
|
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме: 804931
Репутация:
526
|
|
Gifts автоматизция- великая вещь. Главное с умом подходить
Можно на стройке и кирпичи на 30-й этаж на горбу таскать - однако ж для чего то придумали подъемные краны, блоки и другие хитроумные приспособления =)
|
|
|

18.12.2008, 02:15
|
|
Постоянный
Регистрация: 24.05.2008
Сообщений: 589
Провел на форуме: 3629857
Репутация:
504
|
|
ну ну... однажды что-то не так пойдет, что то не так удалится из базы.. лучше пусть модеры ручками поработают.. тем более что не слишком сложная работа.
хотя не спорю что автоматизация - это хорошая вещь(=
|
|
|

18.12.2008, 10:51
|
|
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме: 804931
Репутация:
526
|
|
Сообщение от gisTy
ну ну... однажды что-то не так пойдет, что то не так удалится из базы..
А бэкапы на что?  Легче восстановить новости за пол дня (а то и меньше - ночной бэкап + лог журналов), чем удалять 30к записей или больше вручную =)
|
|
|

18.12.2008, 11:24
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
А лучше при создании новости проверять есть ли похожие
|
|
|

18.12.2008, 12:33
|
|
Постоянный
Регистрация: 26.03.2008
Сообщений: 311
Провел на форуме: 3799424
Репутация:
479
|
|
Сообщение от Isis
А лучше при создании новости проверять есть ли похожие
естественно проверяется. если название точ в точь одинаковое то новость не добавится. постят боты =\
дык они в конце слеш допишут и все(((
|
|
|

18.12.2008, 14:41
|
|
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме: 804931
Репутация:
526
|
|
Сообщение от #Wolf#
естественно проверяется. если название точ в точь одинаковое то новость не добавится. постят боты =\
дык они в конце слеш допишут и все(((
Точно так же - проверяешь процент совпадения, или первые n слов.
Можно впринципе даж триггер на добавление в данную таблицу повесть - и в нем проверять.
Но что лучше конечн виднее тому, кто проектировал систему 
|
|
|

18.12.2008, 16:06
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Сообщение от #Wolf#
естественно проверяется. если название точ в точь одинаковое то новость не добавится. постят боты =\
дык они в конце слеш допишут и все(((
%LIKE%
|
|
|

18.12.2008, 20:32
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
VDShark А что делать с разными версиями программы? Например PHP 5.2.6, PHP 5.2.8 Будут считаться одинаковыми, тоже самое с фильмами - Перевозчик ТС, Перевозчик DVDRip, Перевозчик HDRip Будут тоже беспощадно удаляться. Любое удаление без участия человека будет обречено удалить не то и не так.
Если же хочется как-то автоматизировать, то стоит присмотреться к ПХПшной функции нахождения расстояния левенштейна и к такой ее реализации:
PHP код:
function _levenshtein($str1, $str2) {
return 1-levenshtein($str1, $str2)/max(strlen($str1), strlen($str2));
}
Где $str1 - название новой новости, а в $str2 подставлять все уже существующие названия. Если функция вернет величину больше 25, то отправлять на проверку модераторам. Функция правда тяжеловесная и обрабатывать данные будет долго.
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|