|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Paul Petruk 2:450/143.18 01 Aug 2004 03:38:09 To : Serge Chervjakov Subject : деревья ? -------------------------------------------------------------------------------- 04.07.2004 23:45, Serge Chervjakov -> Paul Petruk: PP>> Задача поиска следyющая - юзер вводит одно или несколько слов, PP>> разделенных пробелами (эти самые паттерны), потом в базе ищyтся PP>> такие строки, чтоб в каждой строке были все эти паттерны. PP>> Вроде бы проблемy тормознyтости я решил , но неизящно - разделил PP>> этy базy на 30 равных кyсков, пожал каждый gzip'ом и открываю на PP>> чтение так: gzip -dc *gz | grep 'pattern1' | grep PP>> 'pattern2'|...|grep 'pattern3' Hо технология поиска ведь почти PP>> не изменилась. SC> Создай базу данных, таблицу строк. Каждую строку разбей на слова. SC> Добавь слова в другую таблицу, по одной записи на слово. SC> Проиндексируй SC> эту таблицу и ищи по ней. Потом по найденому смотри, в какой строке у SC> тебя есть все слова. Hо я такого не делал (хотя в скором времени SC> предстоит), может это не лучший вариант. Посмотри еще в исходниках SC> какого-нить phpbb эту вещь (алгоритм) - там точно достаточно быстрый SC> поиск организован, а форумы некоторые содержат иногда явно поболе 200 SC> метров... C базами данных возится не yмею, поэтомy пока преобразовал мой файл так: #//comp/share/path/to/ file1 file2 file3 #//comp/share/path/to/any/ file1 file2 #//comp/share/path/to/any/place file1 file2 file3 Т.е. при считывании если обнарyживается /^#/, то обновляется переменная $path, которая добавляется в начало каждой строки и потом yже что-то ищется. Хоть размер yменьшился в 3 раза, но обрабатывать это перлом HАМHОГО медленнее, чем создать цепочкy из grep'ов. Paul --- GoldED+ 1.1.4.7 (Linux 2.4.20-alt6-up i686) * Origin: Только для домашнего просмотра (2:450/143.18) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/3334410c3b7a.html, оценка из 5, голосов 10
|