![]() |
|
Модераторы: ginnie |
![]()
|
|
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
хотел спроcить вопрос по поводу построения поиска
есть
но text_co выводит очень длинные текст, как обрезать текст, точнее как найти поисковые слова в тексте обрезать и вывести - 15 симвлов и +15 символов между поисковым словом короче, сложно сформулировать вопрос, но как обрезать красиво текст и показать его, так как делает google или yandex? Это сообщение отредактировал(а) gcc - 30.12.2009, 18:23 |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
т.е. подскажите как это можно обработать, что-то варианты не могу найти..
можно ли весь текст в массив занести через splite? и там порезать и лишнеее выбросить? должно быть решение, чтобы велосипед не писать? |
|||
|
||||
| gcc |
|
||||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
написал, но есть трудности
при поисковой фразе в 5 букв выполняется около 10 сек .и грузит процессор
на странице 10 элементов и кажный медленно выполняется около | 6.877156s | каждый можно ли как-то ускорить или сделать чтобы не грузил процессор? алгоритм: есть текст который нашла MySQL и есть поисковые слова сам текст занимает много где-то 30 000 сиволов (или или меньше пускай 10 000) нужно найти в каком участке найболее совпадений, и чтобы "короткий участок" вывести пользователю.... нужно поделить этот текст по 25 символов и занести в массив всего получиться около 500 элементов массива есть модуль которые быстро ищет чем база данных (так говорит автор) Quantum::Superpositions http://ru.wikipedia.org/wiki/%D0%9A%D0%B2%...%81%D1%82%D1%8C http://www.opennet.ru/docs/RUS/perl_obzor/...s/quantium.html по этому каждые слова еще разделить на массив (получиться двух мерный массив) === поисковая фраза входит которая входит $word_all $content - текст вывод результат это return $search;
вот это eigenstates (Ква́нтовая сце́пленность ( «запу́танность, перепу́танность»)) не захотела работат, это поиск максимального значения в массиве по этому сделал другой класс: вызывается - @f = $c->model('Sorting')->super_max( $found );
при прохождении по массиву кокло 200-500 элементов - медленно можно ли как-то ускорить или сделать чтобы не грузил процессор? как это по другому можно сделать? Это сообщение отредактировал(а) gcc - 3.1.2010, 20:42 |
||||||
|
|||||||
| gcc |
|
||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
я поменял if ( index( any(@$i), $_ ) >= 0 ) {
на if ( $va && $word && $va =~ /$word/i ) { + добавил цикл оно стало чуть помягче!!! ==== но все равно как-то притормаживает что еще можно сделать?? я внизу привул окончательный вариант
я 5 сек. все занимает out_hash - это метод в котором ищется самое большое значение массива (цифра) my @f = eigenstates( any(@$found) >= all(@$found) ); всего элементов около 200 и оно выполняется 2 сек, это номрально ??
как можно ускорить? тексты скорости я привел вверху в этом сообщении Это сообщение отредактировал(а) gcc - 4.1.2010, 03:27 |
||||
|
|||||
| gcc |
|
||||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
вообщем сделал еще оптимизировал....
вот эта штука index(any(@$i), $_) >= 0 поиск в большой базе, медленно работала, заменил на if ( $va && $word && $va =~ /$word/i ) { + удалил дубликаты там где оно совпало большое количество раз по поже покажу полный рабочий вариант..... но вот все таки этот участок кода при большом количестве поисковых фраз выполняется 0.3 сек вот этот участок выполняется один раз 0.3с если добавить еще больше текста и поисковых фраз, то можеи быть до 1с, а всего 10 таких надо обработать... (хотя по сокрости сложно сказать, может быть оно и номрально, текст же не можеи быть через вычайно большой и поисковая фараза большим предложением) НО может быть можно ускорить? $aa2 - это двух мерный массив 100-500 элементов @{ $aa2->[$co] } - массив 25 элементов, "разбитая" строка по кускам @$words - 1-20 элементов поисковая фраза
Добавлено @ 06:42 вот полностью
вызывается - @f = $c->model('Sorting')->super_max( $found );
Добавлено через 12 минут и 28 секунд кстати, тема по-моиму больше относиться к "Общие вопросы", перенесите пожалуйста Это сообщение отредактировал(а) gcc - 5.1.2010, 06:48 |
||||||
|
|||||||
| gcc |
|
||||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: нет Всего: 17 |
вот работает
http://www.x0.org.ua/search/content/off/oracle сразу часть
@f = $c->model('Quantum')->super_max($found);
по большой статье в 2 слова: (довольно быстро)
еще можно чтобы 1) откорректировать поиск если не правильно ввелось слово с раскладкой... 2) и исправить орфографию на ходу... Сахор = Сахар 3) и т.д. как у яндекса часть из этого может Sphinx, но другое надо писать... решил его использовать Это сообщение отредактировал(а) gcc - 7.1.2010, 02:21 |
||||||
|
|||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Регулярные выражения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |