|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Victor Pikman 2:5095/1.29 07 Apr 2001 18:17:05 To : vilfred Subject : RE:с этим разобрался, но выползло еще что-то покруче... -------------------------------------------------------------------------------- v> есть конструкция /$line/i найдет как PitEr pEN так и PITEr Pen, .т.е оно v> осуществляет v> 8^2 поисков, ведь буква то одна, а у ней две разных комбинации, большая v> или маленькая, соответственно в 64 раза больше идет поиск. Как устроен v> этот механизм? v> v> Зачем спрашиваю, допустим ежели искать в русском поиске ВОДКА ЕСТЬ или v> ВоДкА Есть, то ежели в тексте есть ВОДКА ЕСТЬ или ВоДка Есть, то найдет. v> А вот v> v> если в тесте есть водка есть, то уже модификатор i подобно англицкому - v> не работает. Как назвается этот алгоритм, где выцепливаются из текста v> сразу все комбинации. А то ведь делать 64 запроса к базе это тормозно... v> Имхо. v> v> Кто нибудь решал эту проблему? Или может библиотека какая есть, а? Ох ... надо бы тебе локаль настроить... Если есть модификатор /i, то оба параметра соответствующей функции поиска преобразуются в uppercase(например), а уже потом происходит всяческий поиск. у или в lowercase. ОЦРУ ( Особо Ценное Руководящее Указание ) : А вообще постарайся поставить себя на место человека, который пишет соответствующую функцию. Или попробуй написАть ее на C ( например ). И кстати : почему для поиска строки "Водка есть" у тебя 64 варианта ? Ведь каждая буква может быть upper/lower независимо от других. Таких букв 9 ( я не считаю пробел ввиду полного совпадения "uppercase" пробела с "lowercase" пробелом ( 8-)>> ). Отсюда имеем 2**9 = 512 вариантов. База и сеть в ужасе трепещут ... WBR, Pikman ( aka pikman@mail.ru ) --- FIPS/32 v0.99b W95/NT [M] * Origin: (2:5095/1.29) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/28143acf2161.html, оценка из 5, голосов 10
|