Задача [FIM1]: Переиндексация индекса форм

Формулировка проблемы: при большом количестве данных медленно работают фильтры реестров.

Используется: административное приложение - Обслуживание системы

Решение: необходимо реализовать функцию переиндексации индекса форм. При этом должны быть проиндексированы все документы по формам.

Во-первых, в раздел "Обслуживание системы" требуется добавить пункт "Управление индексом форм":

Рисунок 65. Новый пункт в разделе "Обслуживание системы"

Новый пункт в разделе "Обслуживание системы"

Рисунок 66. Вид окна "Управление индексом данных форм"

Вид окна "Управление индексом данных форм"

Окно "Управление индексом данных форм" содержит текущую статистику состояния данных, параметры и кнопки запуска и остановки индексирования, а также панель информации.

Статистика состояния данных

  1. Размер индекса в байтах: при использовании Lucene (устанавливается по умолчанию) отображается прочерк "-"; при использовании Elasticsearch - текущий размер индекса.

  2. Общее количество записей: общее количество документов по формам.

  3. Количество удаленных записей: количество индексов, удаленных при изменении индексируемых данных.

Запуск и остановка индексирования

  1. Продолжить предыдущий процесс индексирования: флаг, позволяющий продолжить ранее запущенный и остановленный процесс индексирования.

    • Если ранее индексирование не осуществлялось, или нет ранее запущенного и остановленного процесса, флаг недоступен.

    • Если последний процесс индексирования был остановлен, то рядом с флагом указан номер позиции, с которой продолжится индексирование.

    • Если последний процесс индексирования был остановлен, а флаг отключен, то процесс индексирования начнется заново.

  2. Пауза между индексированием часлей записей (мс): числовое поле ввода, в котором указывается время необходимой паузы в процессе индексирования. Одной "частью" считается индексирование 500 документов.

Процесс запускается по нажатию на кнопку "Проиндексировать все данные форм". Система запрашивает подтверждение действия:

"Вы действительно хотите проиндексировать все записи?"

Если пользователь подтверждает действие, процесс индексирования начинается. При этом в панели информации отображается сведения о процессе индексирования каждой части в формате:

"Отправлен запрос на индексирование данных форм"

"Индексирование записей начато %ГГГГ-ММ-ДД ЧЧ:ММ%. Займет примерно 2 минуты на каждые 2000 документов. В вашей базе %общее_количество_записей% записей."

"Общее количество записей %общее_количество_записей%, проиндексировано %количество_проиндексированных_записей% за %ss% секунд"

...

"Общее количество записей %общее_количество_записей%, проиндексировано %количество_проиндексированных_записей% за %ss% секунд"

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

Процесс останавливается в двух случаях:

  1. Ручная остановка - по нажатию на кнопку "Остановить индексирование". При этом в панели информации выводится сообщение:

"Процесс индексирования остановлен"

Номер позиции, на которой процесс был остановлен, запоминается, и в дальнейшем индексирование можно продолжить с этой позиции либо начать заново.

  1. Все данные проиндексированы - процесс завершается самостоятельно. При этом в панели информации выводится сообщение:

"Индексирование завершено. Индексирование %общее_количество_записей% записей заняло %M% минут"

Помимо панели информации, сообщения о прогрессе индексирования выводятся как уведомления.

Рисунок 67. Процесс индексирования остановлен

Процесс индексирования остановлен

Рисунок 68. Процесс индексирования завершен

Процесс индексирования завершен