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

Полнотекстовый поиск в системе 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. Если вы настраиваете систему полнотекстового поиска, чтобы искать документы по номеру, выбирайте для индексации секцию Номера, а не поля Регистрационный номер, Исходящий номер в секции Основная информация.

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

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

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

    • Astra Linux / Альт Сервер

    • РЕД ОС / SberLinux

    sudo apt-get update
    sudo apt-get install docsvision-fulltextservice
    sudo dnf makecache
    sudo dnf install docsvision-fulltextservice

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

Чтобы установить сервис полнотекстового индексирования на сервер под управлением Windows:
  1. Запустите инсталлятор модуля Платформа Docsvision Platform server.msi, на шаге выбора компонентов выберите компонент "Cервис полнотекстового индексирования":

    Выбор сервиса полнотекстового индексирования для установки
    Рисунок 1. Выбор сервиса полнотекстового индексирования для установки

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

Все настройки сервиса полнотекстового индексирования хранятся в конфигурационном файле /usr/lib/docsvision/fulltextservice/appsettings.json для Linux и C:\Program Files\Docsvision\FullTextService\appsettings.json для Windows. Откройте конфигурационный файл в любом текстовом редакторе и выполните необходимые настройки сервиса:

{
  "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 Пароль системной учётной записи рекомендуется хранить в зашифрованном виде. Подробнее про шифрование см. в документации по настройке системы, раздел "Защита системной учётной записи".
После сохранения изменений в конфигурационном файле обязательно перезапустите службу Сервиса полнотекстового индексирования. В ОС Linux, в версии 6.1, сборка 853 и выше, служба запускается от имени УЗ Docsvision и не требует root-привилегий.

В ОС Windows службы Docsvision по умолчанию запускаются от системной учётной записи NT AUTHORITY\Network Service. Любое значение, установленное администратором, сбрасывается на значение по умолчанию после обновления версии системы.

Чтобы язык интерфейса (например, названий этапов согласования) отображался корректно, убедитесь, что в параметрах языка Windows для системных учётных записей установлена нужная локаль. Учётной записи NT AUTHORITY\Network Service должны быть предоставлены все необходимые права.

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

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.