Индексировать кучу текстовых файлов - PullRequest
1 голос
/ 06 октября 2010

Мне нужно найти огромное количество текстовых файлов (по всем дискам сервера Unix) для заданной строки (мне нужно). Учитывая время и ресурсы, которые потребуются для этого, я думаю, что выход со списком файлов, содержащих данный токен, является скудным результатом по сравнению с инвестициями.

Это неправильно.

Учитывая, что мне придется все равно анализировать все эти файлы, разве не будет выгоднее создать индекс этого контента, по крайней мере для статистики?

Как я могу это сделать? Какой инструмент?

Любые советы приветствуются:)

Ответы [ 4 ]

0 голосов
/ 05 декабря 2010

Попробуйте GLIMPSE .Он быстро индексирует и сохраняет относительно небольшой индекс в пропорции к данным, но все же выполняет поиск очень эффективно.

Проще всего запустить индексатор из cron.

0 голосов
/ 06 октября 2010

Будут ли файлы меняться достаточно часто, чтобы поддержание индекса было проблемой?Если так, то подумайте, будете ли вы использовать его достаточно часто, чтобы оправдать время и усилия, чтобы поддерживать его в актуальном состоянии.

Лично я бы просто использовал find / -name \*.txt -exec grep -n "my search string" {} \; 2>/dev/null >/tmp/grep.out (скорректируйте аргументы соответствующим образом), а затем селназад и слушайте болтовню диска ...

0 голосов
/ 07 октября 2010

Я использовал

найти. -тип f -print0 | xargs -0 grep -Pl "строка"

но потом я начал использовать ack, который работает намного быстрее и при необходимости пропускает файлы резервных копий.

Создание индекса всего - огромная задача. Я узнал, что даже Беркли BDB начинает замедляться после нескольких сотен миллионов записей.

Lucene (http://lucene.apache.org/) - это индексация полнотекстового поиска по веб-сайтам. Я предполагаю, что его можно использовать для индексации всего диска.

0 голосов
/ 06 октября 2010

Если вам нужно выполнить «одноразовый» поиск, настройка индексатора может оказаться излишней, но если вы планируете выполнить более одного поиска, интересный инструмент, о котором я слышал, это strigi

Он уже упакован по крайней мере для Debian, Ubuntu, Gentoo, не зависит от ОС и DE и имеет графический интерфейс и интерфейсы командной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...