помоги написать рег. вырожение для поиска...

  • Автор темы Автор темы jeno
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.

jeno

Новичок
помоги написать рег. вырожение для поиска...

вообщем, написал поиск на пхп, но не могу написать одно рег выражение...
есть большой текст, и одной слово (которое вписал в поле поиска пользователь), нужно вырезать отрывки текста с этим словом внутри... + выделить его жирным...

подскажите как сделать лучше...вот то что я написал:
Код:
/(\s?\S*\s?){0,5}".$word."(\s?\S*\s?){0,5}/i
оно чего-то ищет с учетом реестра + оч медленно работает...это оч заметно :'(
з.ы.использую preg_match_all();

если кто-то где-то видел хорошие рег. выражения такого рода, дайте плз

-~{}~ 30.11.06 19:44:

и реально ли написать такое: если оно находит в тексте слово, оно вырезает все предложение, но если предложение слишком длинное, оно обрезает его (толково обрезает,не по буквам, а по словам)
и есть ли смысл делать такое сложное вырожение? это сильно замедлит работу скрипта?
 
а ты ИЩЕШЬ именно этим самым выражением?!

если тебе нужен ПОИСК, то искать простое слово нужно не регом.
если тебе нужно вырезать несколько слов, то при чем тут поиск?
 
1. вы уверены что тормозит именно эта регулярка, а не что-то другое? мерили профайлом?
2. сложные алгоритмы надо реализовывать на C и оформлять в виде расширения.
 
1.ищу я mysql запросом (...WHERE `text` LIKE '%слово%'...)
потому полученный текст обрабатываю регуляркой...
то есть, регулярка нужна не для того чтоб найти это слово, а для того чтоб вырезать кусок текста с этим слово....

2.тормозит точно регулярка, так как без нее все работает на много быстрее...

>сложные алгоритмы надо реализовывать на C и оформлять в виде расширения.
а можно где-то прочитать статью по этому поводу? или скачать исходник?!
з.ы.в моем роспаряжении сервер с freebsd 6.0, php5, pgsql, mysql и всем что нужно для полного счастья :)

Спасибо! :)
 
это какого же объема текст, что регулярка заметно на нем тормозит?
 
тормозит точно регулярка, так как без нее все работает на много быстрее...
давайте мы по-старинке всё-таки, профайлером?..

ваша регулярка, конечно, не оптимальная, но хотелось бы увидеть конкретные цифры - объем текста и время выполнения preg_match_all - прежде чем о чём-то говорить.
 
текст:
39 слов
313 байт

с регуляркой 0.90636 сек. без нее 0.00745 сек.
з.ы.мускул возвращает только 1 поле, а если их будет 10-15 на страницу?!

сначала я отправляю mysql запрос, получаю ответ (найдено 1 поле)

потом обрабатываю полученный текст ругеляркой:

Код:
while($res=$db->sql_fetch_object($result)){
	print $res->title."<br />";
	preg_match_all("/(\s?\S*\s?){0,5}".$word."(\s?\S*\s?){0,5}/i",$res->text,$regs);
	for($i=0;$i<sizeof($regs[0]);$i++)
	{
		print $regs[0][$i]."<br />";
	}
	?><br /><br /><br /><?
}
 
хм... да, потому что выражение слишком "многозначительное", так нельзя писать.
навскидку, даже вот такой вариант будет ощутимо быстрей: "/(\S+\s+){0,5}\S*".$word."\S*(\s+\S+){0,5}/i"

P.S. Спасибо за ценное знание - впервые воочию убедился, что неграмотно написанной регуляркой можно изнасиловать сервер.
 
ну а подсказать еще что-то можете? помочь написать более толковое или скинуть ссылку на статью какую нить....
только не надо меня посылать на маны по рег. выражениям :) то что я написал, это максимум....имхо остальное прийдет со временем, которого у меня нет :'(
 
ок, но меня не только скорость интересует...я хотел бы чтоб мне помогли написать рег вырожение более умнее...возможно уже есть готовые...не знаю...
может вы подскажите, как лучше сделать...я поиск в первый раз пишу (такой поиск)
хочется чтоб не просто выводились отрывки текста, а целые предложения...чтоб пользователь понимал, о чем идет речь...
 
...я поиск в первый раз пишу (такой поиск)
хочется чтоб не просто выводились отрывки текста, а целые предложения...чтоб пользователь понимал, о чем идет речь...
и когда несколько слов, находил оптимальные куски текста для подсветки, и т.д. и т.п., "как в гугле"...
sorry, но это в раздел "работа", не иначе.
 
то есть, не где про такое не пишут?! :(
ужас...ладно...буду думать сам...спасибо всем..
 
то есть, не где про такое не пишут?!
есть всякие бесплатные поисковые движки, в них так или иначе эта проблема решается, поищите/скачайте/почитайте-исходники. это если подходит хоть что-нибудь.
 
искал..пока нечего нормального не нашел...меня не поиск данных интересует, а вывод данных...
если кто-то что-то нормально видел, скажите как оно называется пожалуйста...
 
я давно юзаю mnogosearch, но там внешний индексатор. но зато есть морфология
 
jeno

mnogosearch.org. как реалицация поиска (не в целях рекламы =)) php.ru
 
Первый раз пишу поиск. Подскажите пожалуйста принцип по которому осуществляется поиск на страницах.Понятно что нужнобы каждое слово на странице имеющее смысл проиндексировать и занести в таблицу базы данных с сылкой на ту старницу на которой это слово находится. Но тогда как осуществлять переиндексацию страниц. НЕпонятно. МОЖЕТ ЧТО ПОДСКАЖИТЕ.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху