![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| PROme |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 23.7.2003 Где: Kiev Репутация: -1 Всего: 1 |
Значит есть стакая проблема: есть набор слов, есть строки.
Мне нужно определить тематику текста строк, для этого я использую набор сло, например есть слова: авто велосипед машина мотоцикл для определения вхождения слова с троку, использую в цикле, для всех слов:
все нормально если в тексте несколько совпаданий слов, для каждого совпадания выполняется свое действие, так и надо (ведь если в тексте есть, например слово авто и мотоцикл, то этот текст уже не можно считать на тему только авто или только мотоцикл)... но тут возникла проблема - например, вот такой текст: BlaBlaBla - лучший велосипед с автоматическим переключателем скоростей. Тут if сработает, поскольку stristr ищет не слово, а вхождение текста вооще, и он его найдет для слова не по теме - автоматическим (авто - подразумивается автомобиль...) ну может не совсем удачный пример, носмысл, думаю донес: нужно то же самое, только для слов. Есть маленькая проблемка - стово может стоять, например, в конце строки - тогда за ним не будет нипробела (ни точки)... Конечно, можно немного усложнить конструкцию, но тут возникает другая проблема - в данном месте большие требования по производительности: через этот участко кода будут бещз перерыва прогоняться строки... Так что, специалисты Заранее спасибо и сорри за ламерский вопрос... очень нужен наиболее оптимальный вариант -------------------- SEO-мастер |
|||
|
||||
| Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 22 Всего: 53 |
думаю тут регами нужно
|
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
PROme
сначала вырежи лишние пробелы, потом дели explode(' ', $text) |
|||
|
||||
| penizillin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 10.11.2004 Репутация: 8 Всего: 9 |
Opr, Irokez прав - целым словом является любой набор букв, ограниченный не-буквами.
|
|||
|
||||
| PROme |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 23.7.2003 Где: Kiev Репутация: -1 Всего: 1 |
penizillin в этот что-то есть
Opr не проще ли обрамление сделать и пробелы заменить на не букву, а далее уже исходным вариантом искать, обрамив слово этой же не буквой так будет, уверен и быстрее, и память... несравнимо меньше будет потребляться Irokez я не уверен, но мне кажется что реги тоже, благодаря своей универсальности уступают в производительности (хотя кто знает, может те же стандартные функции работы со строками на регах и выполнены... в общем, если у кого есть еще какие решения или идеи - делитесь, заранее спасибо если нет, думаю я к концу недели созрею и выложу свой наиболее оптимальный вариант -------------------- SEO-мастер |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
Лучший способ замерить -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| PROme |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 23.7.2003 Где: Kiev Репутация: -1 Всего: 1 |
замеряем... на досуге...
а вчера перед сном меня осенило предыдущий пост - фактически и есть оптимальное (с моей точки зрения) решение итак, как я его вижу: $str строка, до этого обработанная trim-ом мы делаем примерно так: $str_work=' '.$str.' '; все слова заранее (чтоб небыло лишних операций, они все равно в БД висят) обрамляем пробелами ну и цифры/знаки припенания в $str_work заменяем пробелом а далее уже как в первом посте... по-моему, довольно оптимально может ли кто чего лучше предложить? -------------------- SEO-мастер |
|||
|
||||
| Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 22 Всего: 53 |
|
|||
|
||||
| PROme |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 23.7.2003 Где: Kiev Репутация: -1 Всего: 1 |
я совсем недавно писал что реги так же плохо знаю, как в свое время и работу с физической памятью в Паскале
Irokez, спасибо за пример вызов принят завтра устроим испытания на производительность -------------------- SEO-мастер |
|||
|
||||
| PROme |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 23.7.2003 Где: Kiev Репутация: -1 Всего: 1 |
хм...
уставший вчера был, как то и не посмотрел на код даже он же просто разбивает строку на массив... это и лишние ресурсы... да и не думаю что поиск в массиве строк будет выполнятся быстрее поиска в строке в общем спасибо всем за помощь мой текущий способ решения проблемы пока полностью меня устраивает по производительности -------------------- SEO-мастер |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |