29.12.2012, 20:03 | #1 |
Дикий
Регистрация: 02.06.2007
Адрес: <Noindex>
Сообщений: 2,551
Вес репутации: 355
|
Как убрать повторы слов из текстовой базы?
Есть пара текстовых баз синонимов порядка 35 мегабайт и 800 тысяч строк каждая:
слово1|слово 2 слово 3|слово4|слово1 и т.д. Можно ли как-то PHP скриптом убрать все повторы слов или строки с повторами? Понятно, что полные совпадения удаляются array_unique();, но как дальше обработать пример выше? Написал несколько скриптов за 2 дня, но даже 100 000 строк обрабатывает на компьютере около часа.
__________________
Делаю кулоны с опалами в стекле и не только! |
29.12.2012, 20:16 | #3 |
Дикий
Регистрация: 02.06.2007
Адрес: <Noindex>
Сообщений: 2,551
Вес репутации: 355
|
Мне бы со своим быдлокодингом на PHP-то разобраться... А с базами вообще никогда не работал.
__________________
Делаю кулоны с опалами в стекле и не только! |
29.12.2012, 20:18 | #4 |
Эксперт
Регистрация: 17.10.2011
Сообщений: 1,281
Вес репутации: 181
|
PHP код:
|
29.12.2012, 20:27 | #5 |
Дикий
Регистрация: 02.06.2007
Адрес: <Noindex>
Сообщений: 2,551
Вес репутации: 355
|
mnogoclipov, спасибо, это я уже сделал. Слова в 1 строке не повторяются. Они повторяются в разных строках базы (как в примере выше).
Пробовал заносить каждое слово в $array[] и удалять строки с повторами слов, но там время работы - ужас просто.
__________________
Делаю кулоны с опалами в стекле и не только! |
29.12.2012, 20:36 | #6 |
Эксперт
Регистрация: 17.10.2011
Сообщений: 1,281
Вес репутации: 181
|
А скиньте мне, я посмотрю.
Добавлено через 1 минуту Прото тут разные варианты..можно array_diff заюзать. Короче нужно смотреть Последний раз редактировалось mnogoclipov; 29.12.2012 в 20:36. Причина: Добавлено сообщение |
29.12.2012, 20:40 | #7 |
Дикий
Регистрация: 02.06.2007
Адрес: <Noindex>
Сообщений: 2,551
Вес репутации: 355
|
Вам 2 базы синонимов скануть на 60 мегабайт или скрипт? И если базы - то куда.
Добавлено через 4 минуты Вообще, они бредовые, но нужно же с чего-то начинать при постройке и тестах синонимайзера: чрево|брюхо|живот|внутренняя часть|внутренность|нутро|эпигастрий|недра|брюшко|ч ерево|мамон|утроба|лоно|пузо| чревовещатель|вентролог|энгастрилок|вонючка| чревосечение|вскрытие|лапаротомия| чревоугодник|лакомка|сластена|сластоежка|гастроном |обжора|удав|объедала|чревобесник|объедало|прорва| гурман| чревоугодница|жабрунья|гурманка|едунья|чревобесниц а|обжора|обжорка| чревоугодничать|есть в три горла|объедаться|переедать| чревоугодничающий|переедающий|объедающийся| чревоугоднический|гурманский| чревоугодничество|чревоугодие|переедание|гурманств о|обжорство| чреда|вереница|череда|цепь|цепочка|галерея|гряда|л иния|ряд| чредой|чередой|друг за другом|гуськом|гусем|цепью|вереницей|цепочкой| чрез|сквозь|путем|посредством|через| чрезвычайка|чека|положение|
__________________
Делаю кулоны с опалами в стекле и не только! Последний раз редактировалось D.iK.iJ; 29.12.2012 в 20:40. Причина: Добавлено сообщение |
29.12.2012, 20:45 | #8 |
Мастер
Регистрация: 09.06.2009
Сообщений: 602
Вес репутации: 218
|
Предварительно создать таблицы mysql, а в начало скрипта установить соединение с БД и создать таблицу word_table с 2 полями-
word_value-поле,куда кладется ключ id_str-поле,которое содержит id строки. После работы по всем строкам оставляет только одно значение по первой попавшейся строке. ................. PHP код:
|
29.12.2012, 20:50 | #9 |
Эксперт
Регистрация: 17.10.2011
Сообщений: 1,281
Вес репутации: 181
|
D.iK.iJ - ну просто любопытно было посмотреть, чего оно так тупит с таким объемом. Хотя в чистом пхп я с таким объемом не работал, поэтому все возможно
А вот насчет базы тут правильно говорят. У меня на работе база весит полтора гига. И ниче..шоркается нормально. ЗЫ Если с базой - самый простой способ - тупо брать все слова в строке и писать в базу. Но в базе поле со словом сделать уникальным, т.е. чтобы там были только уникальные слова. Инсертим в цикле, а потом просто из базы вытягиваем готовую базу слов без повторов. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Печать текстовой области web-страницы | fsb-sasha | Курилка | 5 | 27.11.2011 17:37 |
Повторы | Апокалипсис | Пожелания пользователей системы | 3 | 25.07.2010 04:39 |
Объем текстовой информации в новости на DLE | Elektra | Разработка и сопровождение сайтов | 2 | 28.02.2010 17:06 |
Повторы слов в ссылках реабилитировали? | llenivo | Ошибки при работе с системой | 12 | 21.03.2009 00:30 |
Предупреждения На Повторы Слов | MS555 | Пожелания пользователей системы | 16 | 29.10.2008 13:38 |
Часовой пояс GMT +3, время: 13:28.