Формулировка проблемы: необходима возможность полнотекстового поиска по файлам нескольких реестров с поддержкой поиска по метаданным и классификатору.
Решение: необходимо реализовать следующий метод:
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"
}
]
}