Настройка полнотекстового поиска

Полнотекстовый поиск в системе Docsvision — это поиск карточек, содержащих заданную строку в данных и/или в связанных файлах.

Полнотекстовый поиск может использоваться для:
  • Поиска точного совпадения слов.

  • Поиска слов, начинающихся с заданной последовательности букв, например, по ключевому слову "приказ" будут отобраны слова "приказываю", "приказать" и подобные.

  • Морфологического поиска — поиска с учетом словоформ.

Полнотекстовый поиск может искать данные, которые были проиндексированы сервисом полнотекстового индексирования Docsvision. Данный сервис передает данные во внешнюю систему поиска, которая непосредственно индексирует их и предоставляет ответы на поисковые запросы.

Docsvision поддерживает две системы полнотекстового поиска:
  • Встроенная в Microsoft SQL Server система поиска — только для БД Microsoft SQL Server.

  • Система полнотекстового поиска Elasticsearch — для БД Microsoft SQL Server и PostgreSQL.

Одна база данных может быть настроена на работу только с одной системой полнотекстового поиска. К одному сервису полнотекстового индексирования могут быть подключены несколько баз данных Docsvision, индексируемых с помощью разных систем полнотекстового поиска.

Особенности работы полнотекстового поиска

  1. Полнотекстовый поиск от Microsoft SQL работает по префиксу. Соответственно, будут найдены только строки, где слово начинается с части введённой в поисковую строку.

  2. Добавленные недавно данные (например, созданная карточка) станут доступны для нахождения поиском в клиентской программе не сразу, а через какое-то время. Этот временной промежуток между добавлением данных и формированием индексов определяется периодом формирования очереди обработки и периодом обработки этой очереди сервисом полнотекстового индексирования. Очередь обработки выполняется задачей в SQL Server с периодичностью 5 минут.

  3. Качество поиска в Elasticsearch и SQL Server может различаться из-за особенностей формирования индексов, учитывающих морфологию языка:

    • Для поиска в SQL Server может передаваться более короткая часть искомого слова, чем необходима Elasticsearch.

      Например, для поиска документов с названием Исходящий … с помощью SQL Server пользователю достаточно ввести исх, в Elasticsearch — исходящ.

    • Результаты поиска в Elasticsearch могут содержать записи, не полностью совпадающие со словами поисковой фразы (менее жесткий поиск, чем в SQL Server).

      Например, при поиске по фразе исходящ ном2, результат может содержать записи Исходящий номер1, Исходящий номер2 и т.п.

    • В некоторых вариантах поисковой фразы Elasticsearch может не возвращать результаты.

  4. Полнотекстовый поиск по содержимому файлов карточек поддерживается не для всех файлов.

    При использовании встроенной в Microsoft SQL Server системы поиска[1]:
    • Файлы .pdf.

    • Файлы Microsoft Office.

  5. Если вы настраиваете систему полнотекстового поиска, чтобы искать документы по номеру, выбирайте для индексации секцию Номера, а не поля Регистрационный номер, Исходящий номер в секции Основная информация.

    В прочих карточках необходимо следовать схожей логике: проверять наличие похожей секции и при необходимости выбирать её.

Установка сервиса полнотекстового индексирования

  1. Установите сервис полнотекстового индексирования, предварительно обновив индекс пакетов:

    sudo apt-get update
    sudo apt-get install docsvision-fulltextservice
  2. Все настройки сервиса полнотекстового индексирования хранятся в конфигурационном файле appsettings.json. Откройте конфигурационный файл в любом текстовом редакторе, например nano:

    sudo nano /usr/lib/docsvision/fulltextservice/appsettings.json
  3. Выполните необходимые настройки сервиса:

    {
      "DocsVision": {
        "Platform": {
          "Server": {
            "LogFile": "/var/log/docsvision/fulltextservice.log" (1)
            "Databases": {
              "alias": "CONNECTION-STRING" (2)
            }
          }
        }
      },
      "DataProtectCertificateThumbprint": "thumbprint", (3)
      "SystemUserAccount": "account@domain.com", (4)
      "SystemUserPassword": "password" (5)
    }
    1 Путь к файлу журнала полнотекстового поиска.
    2 Строка подключения к индексируемой БД.
    3 Отпечаток закрытого ключа шифрования SHA1.
    Указывается без двоеточия, например, D8602179888DC8402B393F11DCA16A3376DDF879, см. подробнее в документации по установке системы, раздел "Защита системной учётной записи".
    Если шифровать пароль системной учётной записи не планируется, параметр можно удалить.
    4 Имя системной учётной записи Docsvision.
    Не рекомендуется авторизоваться на клиентских рабочих местах под системными учётными записями, т.к. это может привести к ошибкам в работе системы.
    5 Пароль системной учётной записи рекомендуется хранить в зашифрованном виде. Подробнее про шифрование см. в документации по установке системы, раздел "Защита системной учётной записи".
  4. Запустите сервис полнотекстового поиска следующей командой:

    sudo systemctl start dvfulltextservice

Строка подключения к БД

Microsoft SQL

Initial Catalog=Имя-БД; Data Source=Полное-имя-сервера-СУБД; User ID=Имя-пользователя; Password=Пароль-пользователя;

PostgreSQL

Server=Адрес-сервера-базы-данных; Port=SQL-порт; Database=Название-БД; User ID=Имя-пользователя; Password=Пароль-пользователя;


1. Должны быть установлены компоненты Microsoft Office 2010 Filter Packs и Adobe PDF IFilter 11.0.1.