Формулировка проблемы: необходима возможность полнотекстового поиска по файлам нескольких реестров с поддержкой поиска по метаданным и классификатору.
Решение: необходимо реализовать следующий метод:
URL метода: rest/api/registry/files/search
.
Тип запроса: POST
.
Метод принимает следующие параметры (json):
registries
- массив UUID
реестров, по которым должен осуществляться поиск (обяз.);
contains
- строка, которая должна содержаться
в искомых файлах (не обяз.);
notContains
- строка, которая не должна
содержаться в искомых файлах (не обяз.);
sortType
- тип сортировки файлов (не обяз.,
по умолчанию 0), одна из констант:
0
- по релевантности
1
- по дате
2
- по популярности
modifiedFrom
- начало периода последнего
изменения в формате yyyy-MM-dd (не обяз.);
modifiedTo
- завершение периода последнего
изменения в формате yyyy-MM-dd (не обяз.);
metadata
- массив объектов со свойствами,
которыми должны обладать искомые файлы (не обяз.):
name
- код свойства
value
- значение свойства (для текстовых
свойств)
values
- массив из двух значений свойства
(диапазон дат "от" и "до" в формате
ГГГГ-ММ-ДД)
Примечание: для того, чтобы работал поиск по датам в свойствах необходимо провести переиндексацию хранилища.
categories
- массив идентификаторов
классификаторов, которым должны принадлежать искомые файлы (не
обяз.);
Примечание: идентификаторами классификаторов является числовые значения.
firstResult
- номер первой записи для
возвращаемых результатов выборки (не обяз., по умолчанию 0);
maxResult
- количество записей, которые
должны быть возвращены (не обяз., по умолчанию 30);
locale
- локаль пользователя,
ru/en/kz
(не обяз., по умолчанию
ru
).
В случае неуспешного выполнения возвращается json
с полями:
errorCode
- код выполнения (число, отличное
от 0);
errorMessage
- "Ошибка при выполнении
поиска".
Альтернативные потоки событий.
Альтернативный поток №1. Не передан параметр
registries
. Сервер возвращает ошибку:
Не передан параметр registries
действие не выполняется.
Альтернативный поток №2. Передан некорректный (в т.ч. несуществующий
и/или не по формату) параметр registries
. Сервер
возвращает ошибку:
Передан некорректный параметр registries
действие не выполняется.
Пример передаваемого массива
{ "registries": ["7ce1feff-a3f0-4f4e-8bf6-59e37caf553f", "7b953be8-bddb-4ce4-bbfd-ae9548f69c7f"], "contains": "Документ", "notContains": "Работа", "sortType": 2, "modifiedFrom": "2016-01-01", "modifiedTo": "2016-01-31", "metadata": [ { "name": "subject", "value": "Тема" }, { "name": "date", "values": ["2015-01-01", "2015-01-31"] }, { "name": "language", "value": "Русский" } ], "categories": [1, 2, 3], "firstResult": 1, "maxResult": 3 }
В случае успешного выполнения, метод возвращает следующие параметры (json):
count
- общее количество найденных записей;
list
- json строка со списком найденных
файлов, json каждого результата поиска содержит:
identifier
- идентификатор файла
documentID
- идентификатор документа,
которому файл принадлежит
aiType
- тип файла
name
- название файла
path
- путь к файлу
Пример возвращаемого массива
{ "count": 10, "list": [ { "identifier": "3a170735-4fa3-4e2b-87ae-f346ace3487f", "documentID": "0f3a99ac-a712-40ea-98fe-3642af96b860", "aiType": "ai_image", "name": "Успешное проведение презентации.jpg", "path": "Хранилище/Успешное проведение презентации.jpg" }, { "identifier": "bd523ca2-a2f5-4a8b-ace5-26b300628e32", "documentID": "212af63f-597b-41a8-bbaf-6987d84651ac", "aiType": "ai_text", "name": "Стратегическое планирование.doc", "path": "Хранилище/Стратегическое планирование.doc" }, { "identifier": "d9fed65d-600f-4eae-bba8-78cbee46bc57", "documentID": "5156cafe-8fd4-4e39-bb56-4014f42353a5", "aiType": "ai_text", "name": "Отраслевая программа.pdf", "path": "Хранилище/Отраслевая программа.pdf" } ] }