08.06.2007, 00:50 | #31 |
Мастер
|
посимвольный поиск - глупость, так вы нагружаете сервак, поэтому я дал вам алгоритм более быстрого поиска. и совершенно не важно на каком языке вы его реализуете, на любом языке работа с хэшем бытрее, чем с массивом. а у вас получается работа с массивом, причем неоправданно громоздкая.
__________________
А тут Вы быстро можете посчитать бюджет оптимизации Не забывайте - создание сайта, создание сайтов! |
08.06.2007, 00:53 | #32 |
Специалист
Регистрация: 10.04.2007
Сообщений: 179
Вес репутации: 216
|
Где здесь массив? Пальцем покажите.
Код:
function has_doubles($text) { $maxdbl = 2; // максимальное количество повторов $wordsize = 5; // минимальная длина слова/слога, дубликаты которой ищутся // setlocale(LC_ALL, 'ru_RU.CP1251'); // можно попробовать, если версия PHP с неработающим strtolower $text = strtolower($text); $size = strlen($text) - ($wordsize - 1); for ($i=0; $i<$size; ++$i) { $line = substr($text,$i,$wordsize); if (!strstr($line, ' ') AND substr_count($text,$line) > $maxdbl) return true; } return false; } |
08.06.2007, 00:58 | #33 |
Мастер
|
блин, вы прикалываетесь? или не читали мой пост?
посимвольный перебор при большом количестве запросов будет отжирать кучу памяти и системных ресурсов... это вам о чем-то говорит? я предложил более изящное и простое решение: 1. рубим предложение на слова - кидаем в хэш (буквальные повторы сами вылетают) 2. сравнением хэш с хэшем "черного списка" 3. склеиваем все обратно.. я не критикую ваш код, а показываю более бытро работающее решение!!
__________________
А тут Вы быстро можете посчитать бюджет оптимизации Не забывайте - создание сайта, создание сайтов! |
08.06.2007, 01:05 | #34 |
Специалист
Регистрация: 10.04.2007
Сообщений: 179
Вес репутации: 216
|
Ок, ваша мысль понята и написана.
Но... нам нужна функция контроля, а не автоматического редактирования. Вот то, что вы предлагаете: Код:
function hash_control($text) { return implode(' ', array_keys(array_flip(explode(' ', $text)))); } $out = "порно Порно порно"; echo hash_control($out); |
08.06.2007, 01:08 | #36 |
Специалист
Регистрация: 10.04.2007
Сообщений: 179
Вес репутации: 216
|
Хотя...
Код:
function hash_control($text) { return implode(' ', array_keys(array_flip(explode(' ', $text)))); } $out = "порно Порно порно"; echo hash_control($out) == $out ? 'Повторов нет.' : 'Повторы есть'; |
08.06.2007, 01:08 | #37 |
Мастер
|
ну вот, красиво получилось.. :-) можно добавить, конечно отрезание от слов суффиксов, чтобы получились только корни, или реализовать нечеткий поиск и сравнение, но это уже точно убьет сервак.. :-( тут, я думаю, без ответов со стороны саперов не обойтись..
__________________
А тут Вы быстро можете посчитать бюджет оптимизации Не забывайте - создание сайта, создание сайтов! |
08.06.2007, 01:18 | #39 |
Мастер
|
короче, админов в студию!!!
__________________
А тут Вы быстро можете посчитать бюджет оптимизации Не забывайте - создание сайта, создание сайтов! |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите помогите вставить код в ShopScript | Cat_N | Вопросы по работе системы | 3 | 22.01.2010 14:35 |
Часовой пояс GMT +3, время: 02:57.