|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alan Long 2:5030/1082.72 05 Jul 2004 07:51:36 To : Serge Chervjakov Subject : деревья ? -------------------------------------------------------------------------------- * Originally from Serge Chervjakov (2:5020/400) to Paul Petruk. PP> Задача поиска следyющая - юзер вводит одно или несколько слов, PP> разделенных пробелами (эти самые паттерны), потом в базе ищyтся такие PP> строки, чтоб в каждой строке были все эти паттерны. PP> Вроде бы проблемy тормознyтости я решил , но неизящно - разделил этy PP> базy на 30 равных кyсков, пожал каждый gzip'ом и открываю на чтение так: PP> gzip -dc *gz | grep 'pattern1' | grep 'pattern2'|...|grep 'pattern3' PP> Hо технология поиска ведь почти не изменилась. SC> Создай базу данных, таблицу строк. Каждую строку разбей на слова. SC> Добавь слова в другую таблицу, по одной записи на слово. SC> Проиндексируй эту таблицу и ищи по ней. Потом по найденому смотри, SC> в какой строке у тебя есть все слова. Hо я такого не делал (хотя в SC> скором времени предстоит), может это не лучший вариант. Посмотри SC> еще в исходниках какого-нить phpbb эту вещь (алгоритм) - там точно SC> достаточно быстрый поиск организован, а форумы некоторые содержат SC> иногда явно поболе 200 метров... HУ если заговорили про базы - тогда уж проще раврзится с FullText Search для последних mqsql - для подобного рода задачи самое то. Hу а с grep, можно попробывать так: zgrep -e pattern1 -e pattern3 -e pattern3 *gz Hо все это offtopic, к perl-у не имеющий отношения. Хотя можно конечно (и достаточно не сложно) написать индексатор текстоаого файла с хранением индексов в dbm хешах. Там всего-то нужно хранить: слово => [file1:]offset1, [file2:]offset2 имена файлов нужны если хочется иметь один индекс-файл на несколько текстовых файлов. SC> ___ ifmail v.2.15dev5.3 SC> - Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) -- With best, Ъ-· Ъ Е-ЧLaі\і <alan@x-rays.eu.org> --- timEd/386 1.10+ * Origin: X - Rays Station (2:5030/1082.72) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/45810e8cfaa1.html, оценка из 5, голосов 10
|