Поиск документов в сетевых шарах и файловых помойках

    Помойка


    Почти каждый из нас когда-либо работал в компании, где есть всеми ненавистная "файлопомойка" — шара с тысячами документов без какой-либо структуры. И наверняка у каждого был момент, когда ему нужно было что-то в этой помойке отыскать. "А Василич этот отчёт на шару кидал в прошлом месяце, глянь там" — слышали мы от коллеги, а тот самый Василич на вопрос "А в какой папке?" конечно же отвечал "А х… не помню, в общем, сам ищи". И мы погружались в многочасовой ад — бродили по папкам с документами из 90-х, фотографиями котов, договорами вперемешку с анекдотами и прочим шлаком в надежде найти заветный документ.


    Наверняка многие из нас пытались навести в этой шаре порядок, "С меня хватит, сейчас возьму, разгребу всё и разложу по полочкам" — заявляли мы всем, тратили часы, дни и недели своего времени разгребая завалы. А параллельно Василиса Семёновна из бухгалтерии, или тот же Василич снова разбавляли разобранные файлы своими документами, котами, анекдотами и прочим, возвращая привычный хаос на своё место. И так продолжалось до тех пор, пока вы не сдались. И шара обратно превратилась в привычную помойку.


    Как быть?


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


    Когда мы находились на этапе решения данной проблемы для наших клиентов, мы в первую очередь рассмотрели имеющиеся системы для поиска и менеджмента документов, отдавая приоритет open-source решениям. Не вдаваясь в детали поиска и исследования сразу декларирую результат: быстрого, простого и удобного решения для индексации и поиска в шарах, с OCR, тегированием и подсветкой именованных сущностей просто не существовало.


    Что дальше? Решение


    Поэтому, видя эту проблему во многих компаниях, мы решились на создание своего продукта, конечно же open-source'ного.


    В итоге у нас получился Ambar — система для поиска и структуризации документов, которая наконец соответствовала всем нашим требованиям (GitHub), а именно:


    • Мгновенный поиск по содержимому документов, в т.ч. изображений
    • Тегирование документов, в т.ч. автоматическое (например, помечать все изображения тегом image, или помечать все документы где есть IP адреса тегом ip)
    • Поддержка всех офисных форматов (в т.ч. openoffice), pdf с картинками и старых кодировок вроде CP866
    • Автоматический сбор и синхронизации документов из шар-помоек

    Рассмотрим вариант решения нашей проблемы с помощью Ambar, по шагам:


    1. Устанавливаете Ambar на линукс сервере: нужен Docker и Ubuntu Server 16.04 и выше (
      инструкция по установке на английском)
    2. Настраиваете SMB или FTP краулер (инструкция на английском)

      Настройка краулера
    3. Наблюдаете за процессом индексации ваших документов на странице статистики
    4. Используете поиск с тегами и прочими плюшками

      Поиск

    Итог


    В этой короткой статье мы поделились нашей болью, связанной с большими файловыми помойками в компаниях и нашим подходом к решению этой проблемы.


    Спасибо за внимание!

    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 69
    • +1
      Неплохо!
      Оно файлы к себе затягивает или просто строит индекс?
      Доступ к файлу напрямую осуществляется или проксируется?
      Что если у пользователя нет праа на какую-то папку?
      • 0
        Неплохо!

        Спасибо!


        Оно файлы к себе затягивает или просто строит индекс?

        Ambar затягивает к себе все файлы и хранит у себя


        Доступ к файлу напрямую осуществляется или проксируется?

        Доступ к файлу через Ambar из его базы данных


        Что если у пользователя нет праа на какую-то папку?

        В настройках краулера можно указать из под какой учетки ходить. Во время поиска нет разделения файлов по правам

        • 0
          Ага. Т.е. доступы не наследуются из ntfs?
          но rbac присутствует?
          • 0
            Ambar затягивает к себе все файлы и хранит у себя

            Получается если помойка на терабайт, надо еще терабайт на Ambar выдать?
            • 0

              Да, получается так. И еще надо добавить место для поискового индекса

              • 0
                Жаль, спасибо за ответ.
                • 0
                  Использую дома архивариус 3000 — держит только индекс (примерно 20-30% от исходного объема). Из минусов: закрытый, не умеет OCR и под линуксом работает только под вайном.
                • 0
                  угу, например для тектосвых файлов, вроде doc, html, pdf это где-то еще столько же места, сколько сами файлы. Покрайней мере так в recoll.
          • +4
            А что, делать пакеты больше не круто? Только докер, только хардкор?
            • 0

              Вы имеете ввиду debian пакеты?

              • +3
                deb, rpm — вот это все.
                • 0

                  Нам удобней разворачивать и обновлять приложение через docker, поэтому выбрали его

              • +2
                Больше не круто, да. К сожалению, теперь большинство софта деплоится в виде черных ящиков
                • +2
                  Вот именно что к сожалению.
                  • 0
                    К счастью докер это не черный ящик — в докер файле описана вся последовательность его приготовления.
                • 0
                  Интересно!

                  Вопрос скорее концептуальный (идеи, предложения?): как быть с отсканированными документами? Доков много, секретари сканят все пачками в одну папку, не всегда все разбирается — адищенский ад в итоге.
                  • +3

                    Ну если ваши секретари уже отсканировали все документы то все просто — натравливаете на эту папку Ambar, он автоматически распознает текст со сканов и позволяет по нему искать. Вот скриншот как это выглядит: image

                    • 0
                      Русский не распознается?
                      • 0

                        Русский распознается, также поддерживаются: Ita, Deu, Fra, Spa, Pl, Nld

                        • 0
                          Чем распознаётся?
                          • 0
                            Упс, извиняюсь, ниже уже ответили.
                      • 0
                        Выглядит отлично!
                      • 0

                        Прошу прощения за интимный вопрос, а что это вообще за рабочий процесс в котором несколько человек сканят в одну папку?


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


                        Если, конечно же, это не секретно.


                        Заранее спасибо.

                        • 0
                          Да нет никакого секрета: есть 1 сканер, есть 2 секретаря. Документы пришли, кто-то из них засунул их в сканер, он автоматом сделал копию пачки и положил в дефолтную папку. Пришел второй секретарь, сделал тоже самое с другим доком. Часть из этого отобрали и аккуратно куда-то положили, на часть забили.
                      • 0
                        А как происходит индексация новых файлов, по крону?
                        • 0

                          Да вы правы, в настройках краулера можно указать расписание запуска в крон-формате

                        • –3
                          Без учета разрешений доступа на оригинальные файлы вся эта затея бессмысленна. Прототип, не более.
                          • +4
                            Надо объяснить минусующим. Обычно на файловом сервере настроены четкие разрешения на папки различных отделов, на разные категории документов, или даже используется Dynamic Access Control.
                            Очень интересная идея сделать полнотекстовый кеш всего и отдавать его же всем.
                            Как наяву вижу следующие запросы: *парол*, *зарплат*директор*, и так далее.
                            На дворе 2017 год. И информационная безопасность это не последний, а первый вопрос, который должен быть у разработчика приложений.

                            Здорово заново изобрести Microsoft Search Server для *nix платформ, но безопасность, господа.
                            • 0

                              Иногда такие системы вполне себе живут в контурной модели безопасности, без всего развлечения с rbac. Для части применений этого вполне достаточно.

                          • –9

                            Докер-докер-докер-докер-докер. Убунту-убунту-убунту-убунту-убунту.


                            А если я хочу, например, на macOS развернуть это все? Или на OpenBSD? Или на RHEL? А ничего, говорят мне авторы этого проекта, ставь убунту и разворачивай там докер, потому что это стильно-модно-молодежно.


                            Нет ничего более идиотского, чем ПО, которое безальтернативно распространяется в виде докер-контейнера.

                            • +6
                              Так-то вообще гитхаб же. Бери/собирай/контрибьють
                            • +3
                              Я думаю если вы профинансируете в должной степени разработку, авторы учтут большинство ваших хотелок.
                              • +4
                                Открою страшную тайну — докер-контейнеры можно запустить и на macOS, и на опенке, и даже (до чего дожили!) на красной шапке.
                                • 0
                                  Синее головное ведерко, надеюсь, не останется в стороне?)
                                • 0
                                  Так докер можно запустить практически везде. Вот то, что нет отдельного пакета — это действительно хуже.
                                • 0
                                  конечно, хорошо бы права доступа учитывать) и хорошо бы под винду, почему-то мне кажется, что проблема с файло-помойками в большей степени всё же у тех, кто в компьютерах не силён)
                                  • 0
                                    Софт ставится на сервере с Linux, а у не сильных в компьютерах клиентов может быть что угодно, в т.ч. и винда.
                                  • +2
                                    Если файлопомойка стала помойкой — это уже не инструмент, и его надо немножко удалить нахрен.
                                    • +1
                                      За удаление некоторых помоек весь отдел АСУ удалить могут. Причем физически, а не просто unmount в отделе кадров.
                                      Знавал я одну помойку, стихийно образовавшуюся лет двенадцать назад.
                                      «ШараСекретарь» называется.
                                      Создавалась исключительно с целью файлообмена между начальником одного органа гос.власти с его приемной ибо принтер ставить начальнику было совершенно нецелесообразно, и даже настраивать печать на принтер в приемной не хотелось по соображениям — пусть секретарь допиливает напильником за шефом перед печатью.
                                      (Да, я мог сказать что _Шефу_ не нужно ставить всё самое лучшее, и даже «так» посмотреть на завсклада, чтобы она перестала спорить).
                                      Но блин, я не ожидал что эта папочка превратиться в главную файлопомойку предприятия.
                                      Обнаружив что на этом компе висит больше файлов чем на штатной файлопомойке на большом толстом сервере с рейдом и т.п. я пытался бороться. Пару лет пытался. И ярлыки людям переправлял и разговоры разговаривал. Лет семь назад плюнул я на это дело и тупо переобозвал «Секретаря» в «Приемную» а файлсервер в «Секретарь».
                                      Я там уже лет пять не появлялся, но шара живет…
                                      • +2
                                        История примерно такая же, только не у меня. Гос. предприятие, половина ПК личных, так же купленный в складчину qnap. Принес мне как-то друг диск, который в том qnap кто-то форматнул. И ладно, своя же помойка, но начальство грозило лишить премии весь отдел, так как им пользовалось все предприятие и основные БД (ms access) были на нем же.
                                        Админа у них там не было, да и навряд ли кто-то в здравом уме согласился бы там работать на полную ставку.
                                    • –4

                                      Какой уродливый костыль, когда есть локальный яндекс-десктоп (его прекратили выпускать лет 10 назад, правда)

                                      • +2
                                        идея классная, но без разграничения прав я не представляю, как ее внедрять.
                                        У меня 300ГБ инфы на файловом сервере + у каждого пользователя еще свой профиль, который тоже можно засунуть для поиска инфы (папку Docs + Desktop).
                                        Документы лежат в нужных папках по темам, но все равно их бывает хрен найдешь.
                                        Осталось придумать как подтягивать разграничение по правам доступа и будет готовое решение.
                                        • +3
                                          Отличный пример применения докера. Просто образцово-показательный. После того, как ломается хотя бы одна из зависимостей, пересобрать золотой образ становится просто невозможно. Я бы сказал, что это гигантская куча антипаттернов системного администрирования.

                                          А проект хороший, да.
                                          • 0

                                            Я вас не понял, про какой золотой образ вы говорите?

                                            • +2
                                              мы решились на создание своего продукта, конечно же open-source'ного.

                                              А проект хороший, да.

                                              Только вот он ни разу не "open source", там fair source с "Use Limitation: 1 user". Так что "хороший" при наличии массы разумных open source альтернатив — по-моему, преувеличение.

                                              • +2
                                                Ого. И они используют gpl'ные компоненты во всю без учёта лицензий? Сурово.
                                                • 0

                                                  Я не уверен насчет gpl'ных, но там все как-то весьма сурово, да. Как минимум, у них в лицензировании должен быть отдельный (и большой, по идее, учитывая Docker) файлик с кучей всяких лицензий хотя бы на всякое такое. Впрочем, конкретно проект ambar-crawler у них вообще без явно указанной лицензии.

                                                • 0
                                                  Одно юр.лицо — один юзер же. Всё нормально :)
                                              • 0
                                                А с помощью чего реализовано OCR?
                                                • 0

                                                  Тщательно настроенный tesseract

                                                  • 0
                                                    А будут ли выложены исходники того же pipeline?
                                                    • 0

                                                      Можем вам лично предоставить, только расскажите что вы с кодом делать хотите.

                                                      • 0
                                                        Я поизучать исходники хотел :) Ведь вы описали свое решение как опенсорсное, а самая мякотка (апи и пайплайн) доступны только в виде докер-имейджей.
                                                        • +1
                                                          Ну так и лицензия не свободная. Опенсорс тут чисто в качестве рекламного хода, чтобы завлекать людей на свое фримиум решение. Ничего личного, просто бизнес.
                                                • 0
                                                  Здорово! Google в свое время такие appliance продавал, но они на себе только индекс хранили и умели обходить в том числе пользовательские компьютеры, а тут все таки нужно много места, чтобы копию всех данных хранить.
                                                  • 0

                                                    Да, проблема появляется, когда захочешь это на NAS поставить. Идея хороша, но реализация хромает (как с сисадминской стороны — докерпомойка, так и с программной — хранение всех файлов в кастомной бд дубликатом)

                                                    • 0

                                                      Добавлю для создателей:
                                                      Крутое решение, только если бы был index only вариант обе эти проблемы были бы решены по большей части. Еще не помешал бы smb вариант, не хотелось бы всем давать админский доступ в малом/среднем бизнесе. А поисковик по документам мастхев.

                                                      • 0

                                                        Не понял про smb вариант, объясните пожалуйста

                                                • 0
                                                  В owncloud\nextcloud можно подключить общую шару. Поиск по именам только есть. Обычно этого хватает, шара остается на месте, файлы не синхронизируются.
                                                  • +2

                                                    Интересно, а вы контрибьютите в проекты, которые используете? Как-то учитываете лицензии проектов, на которые опираетесь?


                                                    Например, я не вижу файла с перечислением лицензий зависимостей от слова совсем. Как минимум, часть зависимостей у вас под Apache License v2, но никакого указания этого я не вижу.


                                                    Ну и хвалиться тем, что у вас "Поддержка всех офисных форматов (в т.ч. openoffice), pdf с картинками и старых кодировок вроде CP866" довольно глупо, это есть у всех кто использует Apache Tika. Собственно, поддержку cp866/ibm866 я добавлял когда-то ради лексиконовских файлов.

                                                    • 0
                                                      Это коммерческий продукт, с несвободной лицензией дающий лишь ограниченный доступ (фактически фримиум), в котором «открытый код» лишь маркетинговый ход.
                                                      Формально они правы, свободная лицензия и открытый код хоть и коррелируют, но не синонимы. Но в целом это некрасиво конечно.
                                                      А нарушение чужих лицензий? Ну бывает. Но кто же будет судиться?
                                                    • 0

                                                      Мгновенно искать по именам файлов умеет everything (voidtools.com). Строит индекс, к себе ничего не копирует, умеет прикидываться http- и ftp-сервером.

                                                      • 0
                                                        Он хорош для локального поиска и, увы, windows only. Сканирование и переиндексация сетевой шары на несколько Тб может занять кучу времени.
                                                        • 0

                                                          Умеет индексировать сетевые диски. Обработка нескольких терабайт не может не занимать кучу времени, чудес не бывает. При использовании NTFS переиндексация осуществляется чуть ли не в реальном времени.

                                                          • 0
                                                            Я не отрицал, что не умеет сканировать шары, они добавляются в качестве обычного каталога. Но вот затык в том, что MFT и USN по сети не передаются, от того и низкие скорости. Кроме того, есть еще проблема с NTFS под линуксами: журнал не обновляется и переиндексацию приходится делать по расписанию.
                                                      • –1
                                                        Прочитал системные требования — 4 GB RAM, 50GB HDD, 2xCPU Core (кажется еще где-то на требование 64 бит натыкался...)
                                                        Это минимальные?! Чем вызвано? Просто хотел бы попробовать на старенькой машине.
                                                        • 0

                                                          Да это минимальные требования, такое железо необходимо чтобы запустился ElasticSearch и приемлемо работал OCR

                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.