Задача [0239]: Фасетный поиск в Документах

Формулировка проблемы: необходимо реализовать фасетный поиск в модуле "Документы" с возможностью выбора способа и направления сортировки результатов.

Используется: Хранилище -> Документы.

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

При вводе поискового запроса в строке поиска модуля "Документы" и последующем нажатии на кнопку лупы/клавишу Enter отобразится новый интерфейс фасетного поиска.

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

Поисковый интерфейс разбит на две части:

Рисунок 251. Поиск в модуле "Документы"

Поиск в модуле "Документы"

В случае, если пользователь ничего не ввёл в строку поиска (как в «глобальную», так и в строку в интерфейсе поиска), то необходимо отображать интерфейс поиска в следующем виде:

Рисунок 252. Пустой поиск в модуле "Документы"

Пустой поиск в модуле "Документы"

Основная рабочая область

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

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

В верхней панели экрана располагаются кнопка "Детали" и пагинатор. По умолчанию отображается первая страница. Количество результатов поискового запроса, отображаемых на одной странице - 30.

Результаты могут быть отфильтрованы как выбором фасетов в боковой панели, так и фильтром навигатора ("боковой фильтр"). Эти два способа могут использоваться совместно, например: сначала вводится строка поиска, фильтруется выбором каких-либо фасетов, а затем ещё ограничивается фильтром навигатора и т.д.

Боковая панель

Боковая панель экрана разделена на группы фасетов:

  • Категории поиска;

  • Статус документа;

  • Тип совпадения;

Также имеется группа настроек "Сортировка".

Все фасеты представлены в формате:

%Название_фасета% (%N%)

где N - количество найденных результатов поиска согласно данному фасету.

По умолчанию выбраны первые фасеты каждой группы. Форматирование выбранных пунктов указано в соответствующем разделе.

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

Пример

Пользователь вводит что-либо в поисковую строку и выбирает фасет «Номер». Далее пользователь меняет значение поисковой строки. Фасет «Номер» остаётся выбранным.

Боковая панель имеет собственный скролл, который появляется в том случае, если фасеты не умещаются в неё по вертикали (например, большое количество динамически формируемых пунктов).

Рисунок 253. Поиск в модуле "Документы" - 2

Поиск в модуле "Документы" - 2

Категории поиска

Категории поиска представляют собой наборы полей документов в зависимости от выбранного узла:

  • все журналы:

    • Номер;

    • Номер (исх);

    • Краткое содержание;

    • Корреспондент (орг);

    • Корреспондент;

    • Автор;

    • Зарегистрировал;

    • Исполнитель;

    • Тип документа;

    • Доп. поля карточки;

  • журнал типа "Внутренний":

    • Номер;

      • список динамически формируемых пунктов;

    • Краткое содержание;

    • Автор;

    • Зарегистрировал;

    • Исполнитель;

    • Тип документа;

    • Доп. поля карточки;

  • журнал типа "Входящий":

    • Номер;

      • список динамически формируемых пунктов;

    • Номер (исх);

    • Краткое содержание;

    • Корреспондент (орг);

    • Корреспондент;

    • Зарегистрировал;

    • Исполнитель;

    • Тип документа;

    • Доп. поля карточки;

  • журнал типа "Исходящий":

    • Номер;

      • список динамически формируемых пунктов;

    • Краткое содержание;

    • Корреспондент (орг);

    • Корреспондент;

    • Автор;

    • Зарегистрировал;

    • Тип документа;

    • Доп. поля карточки;

  • "Дела":

    • Номер;

    • Номер (исх);

    • Краткое содержание;

    • Корреспондент (орг);

    • Корреспондент;

    • Автор;

    • Зарегистрировал;

    • Исполнитель;

    • Тип документа;

    • Доп. поля карточки;

  • "Все":

    • Номер;

    • Краткое содержание;

    • Корреспондент (орг);

    • Корреспондент;

    • Автор;

    • Зарегистрировал;

    • Исполнитель;

    • Тип документа;

    • Доп. поля карточки.

Список динамически формируемых пунктов. Представляет собой динамически формируемый список счетчиков, настроенных в системе, исключая стандартные счетчики даты регистрации, а также «Индекс дела» ({file_index}).

Пункты отображаются в формате:

Элемент %номер_п/п% - %код_счетчика/звезды%

Динамически формируемые пункты отображаются только для журналов. Список пунктов зависит от выбранного журнала, в котором осуществляется поиск.

Для корневого узла журналов данные пункты отсутствуют[4].

Статус документа

Данная группа фасетов определяет отображения документов согласно их статусу:

  • Все документы - зарегистрированные и незарегистрированные документы;

  • Только незарегистрированные;

  • Только зарегистрированные.

Тип совпадения

Фасеты данной группы определяют тип совпадения результатов относительно поискового запроса:

  • Все - документы с полным, а также частичным совпадением результата запроса;

  • Полное совпадение - документы с полным совпадением результата запроса.

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

Примечание

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

Примечание

По техническим причинам полное лексикографическое, а также частичное (в стиле wildcard) совпадение не будет работать в фасете «Доп. поля карточки». Поиск в этом фасете будет осуществляться по основам слов.

Сортировка

Данная группа определяет сортировку найденных результатов поискового запроса. Возможно осуществлять сортировку по следующим типам:

  • По релевантности;

  • По дате регистрации;

  • По номеру;

  • по динамически формируемым пунктам;

  • По краткому содержанию;

  • По автору;

  • По зарегистрировавшему;

  • По исполнителю.

По динамически формируемым пунктам. Список динамически формируемых пунктов повторяет соответствующие им фасеты для выбранного журнала и отображается в формате:

По элементу %номер_п/п% - %код_счетчика/звезды%

Сортировка осуществляется по убыванию в пунктах:

  • По релевантности

  • По дате регистрации

  • По элементу %номер_п/п% - %код_счетчика/звезды%

В остальных пунктах - по возрастанию.

Также необходима возможность сортировки документов с учетом их статуса. Для этого будет реализована настройка "Сначала незарегистрированные" в виде флага (по умолчанию выключен).

Алгоритм сортировки зависит от данной настройки и выглядит следующим образом:

Флаг выключен

В данном случае сортировка осуществляется по следующим критериям:

  • первый критерий - по сущности выбранного типа сортировки;

  • второй критерий - по дате регистрации;

  • третий критерий - по дате создания.

Флаг включен

При включении настройки в модуле будут отображаться сначала все незарегистрированные документы, удовлетворяющие поисковому запросу, а затем - зарегистрированные. При этом критериями сортировки будут служить:

  • Незарегистрированные документы:

    • первый критерий - по сущности выбранного типа сортировки;

    • второй критерий - по дате создания;

  • Зарегистрированные документы:

    • первый критерий - по сущности выбранного типа сортировки;

    • второй критерий - по дате регистрации.

    • третий критерий - по дате создания.

Если в результате сортировки по первому критерию имеется несколько документов с одинаковым значением, то подключается второй критерий. Если данное поведение повторилось и для второго критерия - сортировка осуществляется по третьему критерию.

Сортировка по дате регистрации

Сортировка по дате регистрации - составной критерий: результаты поиска с одинаковой датой регистрации сортируются между собой по дополнительному счётчику, а при одинаковых дополнительных счётчиках (такое может быть, например при поиске по фильтру «Все» или по всем журналам) - по дате создания.

Примечание:

Это поведение должно также быть распространено на критерии сортировки в фильтрах документов (см. задачу 10608).

Сортировка по релевантности

Сортировка результатов такой сортировки будет осуществляться в следующей последовательности:

  • полное лексикографическое совпадение, но без учета регистра;

  • полное совпадение при наличии повторяющихся слов;

  • полное совпадение, но с измененным порядком слов;

  • совпадение по основе.

Остальные результаты не являются важными и сортируются по общей релевантности.

Более подробно данный механизм можно просмотреть в примере использования

Форматирование

Шрифт выбранного фасета - #0063c5, bold.

Пример использования

Пусть список документов входящего журнала выглядит следующим образом (тип документа у всех «Входящий» шаблон номера в примере — 08-03/{in1}, период сброса — каждый год):

Рисунок 254. Таблица 1

Таблица 1

  1. Сотрудник канцелярии открывает журнал входящих документов модуля "Документы".

  2. В окне поиска устанавливает курсор, вводит «123» и нажимает <Enter>.

  3. В основной области вместо списка документов отобразился поиск по категориям.

Категории поиска:

  • Все результаты (12) — выбран по умолчанию

  • Краткое содержание (2)

  • Номер (7)

    • Элемент 1 - in1 (7)

  • Номер исх (4)

  • Корреспондент (0)

  • Корреспондент (орг) (0)

  • Зарегистрировал (0)

  • Исполнитель (0)

  • Тип документа (0)

  • Доп.поля карточки (0)

Статус документа:

  • Все документы (12) — выбран по умолчанию

  • Только незарегистрированные (2)

  • Только зарегистрированные (10)

Тип совпадения:

  • Все, включая неполное совпадение (12) — выбран по умолчанию

  • Только полное совпадение (4)

Сортировка:

  • По релевантности — выбран по умолчанию

  • По дате регистрации

  • По краткому содержанию

  • По номеру

  • По элементу 1 - in1

  • По автору

  • По зарегистрировавшему

  • По исполнителю

И далее флажок:

  • Сначала незарегистрированные — нет (значение по умолчанию).

Согласно критериям по умолчанию документы отсортированы в следующем порядке:

Рисунок 255. Таблица 2

Таблица 2

Примечание

  • сначала идут документы с полным совпадением по полю «Номер исх» (значение релевантности высокое);

  • затем идет документ с полным совпадением по полю «Краткое содержание» (значение релевантности высокое, но ниже номера исх);

  • затем идет документ с совпадением по основе слова;

  • далее — частичное совпадение.

  1. Пользователь включает флажок «Сначала незарегистрированные». Обновится сортировка документов:

Рисунок 256. Таблица 3

Таблица 3

Примечание

  • Cначала идут незарегистрированные документы. Между собой они отсортированы по релевантности:

  • сначала идет документ с полным совпадением (значение релевантности высокое);

  • затем идет документ с совпадением по основе слова (значение релевантности ниже).

  • Cледом идут зарегистрированные документы. Между собой они также отсортированы по релевантности:

  • первые 3 документа имеют полное совпадение по полю «Номер исх» (значение релевантности одинаково высокое), они будут отсортированы между собой сначала по дате регистрации, затем по дате создания;

  • в остальных — частичное совпадение.

  1. Сотрудник выделяет среди категорий поиска «Элемент 1 - in1 (7)». Обновятся группы фасетов «Тип совпадения» и «Статус документа»:

    • Все, включая неполное совпадение (7)

    • Только полное совпадение (3)

По данным критериям документы будут отсортированы в следующем порядке:

Рисунок 257. Таблица 4

Таблица 4

Примечание: сортировка аналогична пункту выше.

  1. В типе сортировки сотрудник канцелярии указывает «По элементу in1». Теперь документы отсортированы в следующем порядке:

Рисунок 258. Таблица 5

Таблица 5

Примечание

  • Т.к. у незарегистрированных документов отсутствует номер, в выборке такие документы отсутствуют.

  • Среди зарегистрированных документов:

  • первые 3 документа имеют полное совпадение по «Элементу счетчика» и, соответственно, одинаковую релевантность (будут отсортированы между собой сначала по дате регистрации, затем по дате создания);

  • в остальных — частичное совпадение.

  1. В типе сортировки сотрудник канцелярии указывает «По дате регистрации». Теперь документы отсортированы в следующем порядке:

Рисунок 259. Таблица 6

Таблица 6

  1. В типе совпадения сотрудник канцелярии указывает «Только полное совпадение». Результаты поиска:

Рисунок 260. Таблица 7

Таблица 7

  1. Изменить поисковую строку на «Входящий». Категория поиска - «Краткое содержание», статус документа - «Все документы», тип совпадения - «Все, включая неполное совпадение», сортировка - «По дате регистрации», «Сначала незарегистрированные» - да.

Категории поиска:

  • Все результаты (23)

  • Краткое содержание (15)

  • Номер (0)

    • Элемент 1 - in1 (0)

  • Номер исх (0)

  • Корреспондент (0)

  • Корреспондент (орг) (0)

  • Зарегистрировал (0)

  • Исполнитель (0)

  • Тип документа (23)

  • Доп.поля карточки (0)

Статус документа:

  • Все документы (15)

  • Только незарегистрированные (5)

  • Только зарегистрированные (10)

Тип совпадения:

  • Все, включая неполное совпадение (15)

  • Только полное совпадение (0)

Сортировка:

  • По релевантности

  • По дате регистрации

  • По краткому содержанию

  • По номеру

  • По элементу 1 - in1

  • По автору

  • По зарегистрировавшему

  • По исполнителю

И далее флажок:

  • Сначала незарегистрированные — да.

По данным критериям документы отсортированы в следующем порядке:

Рисунок 261. Таблица 8

Таблица 8

Примечание: • Сначала идут незарегистрированные документы. Между собой они отсортированы по дате создания. • Следом идут зарегистрированные документы. Между собой они отсортированы по дате регистрации.

  1. Изменить поисковую строку на «Сладкой ваты». Категория поиска - «Краткое содержание», статус документа - «Все документы», тип совпадения - «Все, включая неполное совпадение», сортировка - «По релевантности», «Сначала незарегистрированные» - да.

Категории поиска:

  • Все результаты (7)

  • Краткое содержание (7)

  • Номер (0)

    • Элемент 1 - in1 (0)

  • Номер исх (0)

  • Корреспондент (0)

  • Корреспондент (орг) (0)

  • Зарегистрировал (0)

  • Исполнитель (0)

  • Тип документа (0)

  • Доп.поля карточки (0)

Статус документа:

  • Все документы (7) — выбран по умолчанию

  • Только незарегистрированные (7)

  • Только зарегистрированные (0)

Тип совпадения:

  • Все, включая неполное совпадение (7)

  • Только полное совпадение (1)

Сортировка:

  • По релевантности

  • По дате регистрации

  • По краткому содержанию

  • По номеру

  • По элементу 1 - in1

  • По автору

  • По зарегистрировавшему

  • По исполнителю

И далее флажок:

  • Сначала незарегистрированные — да.

По данным критериям документы отсортированы в следующем порядке:

Рисунок 262. Таблица 9

Таблица 9

Примечание

  • Все документы в выборке незарегистрированные. Между собой они отсортированы по релевантности:

  • первый документ имеет полное совпадение (наибольшее значение релевантности);

  • второй документ имеет совпадение с поисковой строкой, но является частичным совпадением;

  • третий документ имеет совпадение по словам поисковой строки, но их порядок не совпадает;

  • четвертый документ имеет совпадение по основам слов;

  • далее идут документы с частичным совпадением.



[4] Список динамически формируемых пунктов должен работать так же, как в фильтрах модуля «Документы» (см. задачу 9625)