Личные и рабочие документы редко лежат в одном месте: часть в PDF, часть в письмах, часть в таблицах и заметках. Искать по именам файлов бесполезно, если помнишь только фразу из текста. Recoll строит локальный полнотекстовый индекс на базе Xapian, не отправляет содержимое в облако и открывает результаты в привычных программах. Ниже — установка, настройка и повседневные запросы.
Что умеет Recoll
Recoll обходит заданные каталоги, извлекает текст и складывает его в базу Xapian. Для PDF используется poppler, для офисных форматов — LibreOffice или специальные конвертеры, для архивов — распаковщики. Текст извлекается не только из обычных файлов: индексируются вложения в письмах, документы внутри ZIP и epub. Если для формата нет помощника, файл попадёт в список пропущенных, а имя всё равно можно будет найти.
Индекс хранит почти полную копию проиндексированного текста. Это важно для скорости и сниппетов, но означает, что каталог ~/.recoll требует такой же защиты, как сами документы. Recoll не является поиском по сети и не заменяет корпоративную DMS: это персональный или серверный индекс для своих файлов.
Установка и проверка
В Debian, Ubuntu и Linux Mint достаточно метапакета recoll: он подтянет консольные утилиты и графический интерфейс. В Fedora пакет называется так же, в Arch Linux доступен recoll из репозитория. После установки проверьте версию и наличие примеров конфигурации.
sudo apt install recoll
dpkg -l recoll | tail -1
ls /usr/share/recoll/examples/
recollindex -h | head -40
Файлы в /usr/share/recoll/examples/ — это образцы recoll.conf, mimemap и mimeconf. Свои значения нужно писать в ~/.recoll/recoll.conf, а не править системные. Каталог конфигурации создаётся при первом запуске recoll или recollindex.
Настройка области индексации
Главный параметр — topdirs, список каталогов, с которых начинается обход. Пути разделяются пробелами, а каталоги с пробелами заключаются в кавычки. Сразу ограничьте мусор: виртуальные окружения, кэши, образы дисков и медиафайлы не дают полезного текста, но замедляют индексацию.
topdirs = ~/Documents ~/Downloads "/home/user/Общее"
skippedNames = .git node_modules *.iso *.tmp
skippedPaths = ~/.cache ~/.local/share/Trash
noContentSuffixes = .jpg .png .mp4 .webp
textfilemaxmbs = 50
indexallfilenames = 1
skippedNames сравнивает имена файлов и каталогов по шаблонам, skippedPaths исключает целые поддеревья. noContentSuffixes оставляет в индексе только имя, но не содержимое. textfilemaxmbs защищает от гигантских логов, а indexallfilenames позволяет находить файлы неподдерживаемых типов по названию. Для томов с резервными копиями лучше создать отдельный индекс через RECOLL_CONFDIR, а не смешивать всё в одной базе.
Первая индексация
Первый проход может занять минуты и заметно нагрузить диск. Запускайте его вручную, чтобы увидеть ошибки, а не через графическое окно с закрытым логом. Ключ -z очищает базу и строит её заново, -Z заставляет переобработать все документы без удаления индекса, -k повторяет файлы, которые раньше не удалось разобрать.
recollindex
recollindex -z
recollindex -k
du -sh ~/.recoll/xapiandb
После завершения откройте recoll и проверьте несколько известных фраз. Если документ не находится, посмотрите файл ~/.recoll/missing: там перечислены типы, для которых не хватает внешней программы. Установите помощник и повторите запуск с -k, иначе индексер по умолчанию не возвращается к неудачным файлам.
Обновление и режим мониторинга
Для большого архива хватает ночного запуска по cron или через systemd-таймер. Для рабочих каталогов удобен режим recollindex -m: процесс остаётся в памяти и реагирует на изменения через inotify. Мониторинг больших деревьев расходует ресурсы, поэтому включайте его только для действительно активных папок.
recollindex -m
recollindex -Z
recollindex -k
crontab -l
Не запускайте одновременно мониторинг и тяжёлую переиндексацию одного каталога: процессы будут мешать друг другу. Если индекс повреждён и выдаёт странные результаты, удалите ~/.recoll/xapiandb и выполните полную сборку. Перед этим убедитесь, что исходные документы на месте — восстановить из индекса их нельзя.
Запросы из терминала
Графический интерфейс удобен для просмотра, но для скриптов и быстрых проверок есть recoll -t и recollq. Запрос состоит из слов и полей, несколько условий объединяются по И. Фраза задаётся кавычками, минус перед словом исключает его, OR пишется заглавными буквами.
recoll -t -q 'договор поставки'
recollq 'ext:pdf "акт сверки"'
recollq 'dir:~/Documents/Работа date:P30D/'
recollq 'size>1M filename:отчет'
Поле dir: ограничивает каталог, date:P30D/ означает последние 30 дней, size>1M — файлы крупнее мегабайта. Доступны title:, author:, filename: и ext:. Ключ -A у recollq добавляет фрагменты текста, а -m показывает метаданные. Для регулярных отчётов удобно сохранять вывод в файл и разбирать его скриптом.
Если ничего не находится
Сначала проверьте, что каталог вообще попал в индекс: запрос dir: по точному пути должен вернуть хотя бы один файл. Затем посмотрите лог. Включите подробность в конфигурации и перезапустите индексацию.
loglevel = 3
logfilename = /tmp/recoll.log
tail -f /tmp/recoll.log
Типичные причины пропусков видно по сообщениям индексера:
no handler— отсутствует конвертер для формата;file too big— сработал лимит размера;- PDF без текстового слоя — нужен OCR через Tesseract.
Пустой результат по русским словам иногда связан с морфологией: попробуйте более короткий корень или отключите стемминг для проверки.
Приватность и ограничения
Индекс создаётся с правами 0700, но при копировании каталога на другой носитель права легко потерять. Не размещайте базу в общей сетевой папке, не отдавайте её в синхронизацию и не индексируйте чужие документы без разрешения. Для ноутбука разумно держать ~/.recoll на зашифрованном разделе.
chmod 700 ~/.recoll
du -sh ~/.recoll
find ~/.recoll -maxdepth 1 -type f
Recoll не умеет искать по содержимому изображений и видео, не заменяет OCR и не индексирует удалённые сетевые ресурсы без монтирования. Зато он предсказуем, работает офлайн и не требует подписки. Для домашнего архива и рабочего ноутбука этого более чем достаточно.
Итог
Recoll даёт быстрый полнотекстовый поиск без облака и телеметрии. Начните с узкого списка topdirs, исключите кэши и медиа, постройте индекс вручную и проверьте его на известных фразах. Дальше добавьте ночное обновление или мониторинг, освоите поля dir:, ext: и date: — и поиск по архиву перестанет быть перебором файлов.