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

Полнотекстовый поиск в системе 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. Должны быть установлены компоненты Microsoft Office 2010 Filter Packs и Adobe PDF IFilter 11.0.1.