Help! Чистка на дубли

12
leo3331
На сайте с 07.01.2007
Offline
154
1403

Здравствуйте.

Есть база из 300к статей.

Каким способом в крадчайшие сроки можно почистить эти тексты на дубли?

если перебирать и проверять каждую статью попарно то это ваще ппц, 6к статей проверяет на пхп под денвером трое суток...

проверка идет так:

1 с 2

1 с 3 и так до .... 1 с 6000 , если первая статья похожая с какой либо другой больше чем на 10% к примеру, то первая статья удаляется и дальше проверяется вторая статья со всеми остальными, кроме первой..... затем третья со всеми, кроме 2 и 1 и т.д. пока все не проверятся...

Как думаете как можно упростить задачу?

P.S. Нужно проверить на дубли все 300к статей...

leo3331 добавил 07.11.2009 в 06:25

Проверяю методом шинглов, длиной в 3 слова

leo3331 добавил 07.11.2009 в 06:27

Может существенно как то можно упростить проверку всей базы перед началом проверки?

статьи в тхт файлах 300к файлов всего

Ярик
На сайте с 26.10.2003
Offline
121
#1
leo3331:
если первая статья похожая с какой либо другой больше чем на 10%

Это вычисление каждый раз происходит? Можно для начала втупую считать количество символов и если статья намного короче или длиннее нафига шингами сравнивать? 🚬

leo3331:
Может существенно как то можно упростить проверку всей базы перед началом проверки?

Как вариант отсортировать по весу, чтоб большое с мелким не сравнивалось. 🚬

Еще можно предварительную сверку по первым 5-10 словам бахнуть, чтоб отсеять явные дубли.

не посылай, да и не послан будешь...
leo3331
На сайте с 07.01.2007
Offline
154
#2

Ярик, тебе отдельный респект, второй раз помог 🚬

leo3331 добавил 07.11.2009 в 07:36

Как вариант есть идея, проверить 3к статей между собой затем к ним добавить еще 3к не чищеных и уже каждую из очищеных сверять непосредственно с новыми статьями... таким способом обойдем очень много проверок не нужных....

leo3331 добавил 07.11.2009 в 07:41

хм, логично конечно же вторые 3к статей между собой тоже проверить перед проверкой двух таких пачек

Alexander123456
На сайте с 13.10.2008
Offline
133
#3
leo3331:
Может существенно как то можно упростить проверку всей базы перед началом проверки? статьи в тхт файлах 300к файлов всего

Проверить сами файлы на дубликаты вначале. Искать по сочетанию "Duplicates remover" программ полно всяких, как платных и так и нет.

leo3331
На сайте с 07.01.2007
Offline
154
#4
Alexander123456:
Проверить сами файлы на дубликаты вначале. Искать по сочетанию "Duplicates remover" программ полно всяких, как платных и так и нет.

всмысле на 100% дубли? не понял....

[Удален]
#5
leo3331
На сайте с 07.01.2007
Offline
154
#6

falkhan, :) именно этот скрипт с этого сайта я и юзаю ;)

leo3331 добавил 07.11.2009 в 08:23

переделал чуток

Ярик
На сайте с 26.10.2003
Offline
121
#7
leo3331:
хм, логично конечно же вторые 3к статей между собой тоже проверить перед проверкой двух таких пачек

Ну как-то так. :) На пачки разбивать по размеру - кстати пачку статей можно пихать в один файл, по статье на строчку + array_unique() + и потом не задрачиваться - открыл, закрыл, записал - массивами оно веселее работается.

Перед чисткой на шинглы, явные дубли прибить - ибо нефиг! Искать одну херню в другой быстрее функцией strstr. И это - удалить переносы строк, лишние пробелы, пустые теги (если есть ;) ) Меньше лишней дряни, быстрее работа пойдет.

leo3331
На сайте с 07.01.2007
Offline
154
#8

по сути эт я сморозил... я проверяю со всеми не провереными на дублит статьями...

а если сделать так:

1 с 2

затем эти 2 с третьей.... кароче по сути по ходу будут удаляться дубли... и меньше статей буит проверяться с каждой новой статьей

и в итоге чтобы уменьшить общее кол-во страниц.... брать и по 100 статей к примеру поразделять пачками и их между собой проверить так уменьшим общее кол-во страниц

Ярик
На сайте с 26.10.2003
Offline
121
#9
leo3331:
и в итоге чтобы уменьшить общее кол-во страниц.... брать и по 100 статей к примеру поразделять пачками и их между собой проверить так уменьшим общее кол-во страниц

В общем я успешно запутался как ты там и чего в каком порядке будешь фильтровать. :) Спать хочу.

У меня схема вырисовывается такая,

1 проверяется со всеми, после проверки дубли нах (или пометить) потом 1 в папку проверено, дубли (если нужны) в папку дубли

Потом 2 проверяется, но база с чем проверяем меньше ;) 1(уже проверенной) там нет и дублей нет 🚬

Потом 3 проверяется, но база с чем проверяем меньше ;) 1 и 2 там нет и дублей нет...

И так далее.+++

Короче база с чем сравниваем с каждой проверкой все меньше и меньше. Дубли в дублях, проверенное в проверенном.

Я правильно просчитал? Одно и тоже по несколько раз дрюкаться не будет. ☝

p.s.

За трое суток много дублей зафильтровалось из 6к?

leo3331
На сайте с 07.01.2007
Offline
154
#10

трое суток я так примерно сказал, я не проверял, обрубил....

Кароче мне больше отдыхать нужно....

я думал фишка в том что если

x = y на 4%

x = z на 4%

где x, y, z = 3 разных статьи

не факт что:

y = z на 4% и выше...

Из этого следует, что если хочу наибольшее кол-во статей на выходе... нужно удалить x, а не y и z

Я такую схему уже обдумывал... подумал что блин y и z статьи могут быть разных размеров и поэтому может и не быть 4% между ними... А тут если смотреть относительно x, то оно никак меньше не может быть 4 этих %

или это у меня тож уже мозги не работают )) ночь не спал блин

leo3331 добавил 07.11.2009 в 11:47

нада спать идти , вечер утра мудренее ))

leo3331 добавил 07.11.2009 в 11:52

нет, Ярик, твоя схема не катит, y и z могут быть похожи просто разными кусками текста с x, а между собой быть уникальными, во как я думал (c)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий