Поиск в SharePoint Online. Использование Office Graph
Описание реализации примера использования Office Graph для поиска информации на сайте SharePoint Online с учетом действий пользователей, который я показывал в своем докладе о Microsoft Graph на DevCon 2016.
Graph Query Language (GQL)
Office Graph собирает информацию о действиях пользователей (просмотр профиля, создание/редактирование/чтение документов, отправка и получение сообщений, комментарии, лайки, ответы и отслеживания) и строит связи между объектами в облаке. Эта информация хранится в поисковом индексе, продолжительность хранения определяется типом совершенного пользователем действия. Таким образом мы получаем граф, построенный на данным, хранящихся в Office 365. Визуально это выглядит примерно следующим образом (вершина - голубого цвета - пользователь, зеленого - документ):
Поскольку информация хранится в поисковом индексе, то и получить её можно с помощью API поиска SharePoint. Для доступа к данным графа существует специально созданный для это Graph Query Language (GQL). Синтаксис его следующий:
ACTOR({ActorId} [, filter])
Где ActorId - идентификатор пользователя. Он полностью соответствует свойству DocId.
В строке запроса к API поиска для поиска документов, измененных пользователем (action:1003) GQL выглядит вот так:
_api/search/?Querytext='*'&Properties='GraphQuery:ACTOR({ActorId}\, action\:1003)'
Для примера использования Office Graph в SharePoint Online я создам страницу результатов для поиска среди документов, которые текущий пользователь просматривал или редактировал.
Создание страницы поиска
В центре поиска создаем новую страницу:
Вводим название страницы, например "viewedormodified":
Чтобы эта страница появилась под строкой ввода поискового запроса необходимо добавить ссылку на неё в параметрах поиска (Параметры сайта - Параметры поиска):
Добавляем ссылку на созданную страницу:
Страница есть, переходим к настройкам отображения результатов поиска.
Настройка веб-части результатов поиска
Для начала на созданной странице экспортируем существующую веб-часть результатов поиска и получаем XML-файл в формате .webpart:
Исходную веб-часть результатов поиска можно удалить - она нам больше не понадобится.
Открываем .webpart в любом текстовом редакторе. Нас интересует единственное свойство - DataProviderJSON:
<webParts>
<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
<!--metaData -->
<data>
<properties>
<!-- properties -->
<property name="DataProviderJSON" type="string">{JSON}</property>
<!-- properties -->
</properties>
</data>
</webPart>
</webParts>
Свойство DataProviderJSON содержит параметры в формате JSON. Использование Office Graph задается именно в нем. Для этого добавляем свойство GraphQuery в раздел Properties и ровно такое же в раздел PropertiesJson. Результат должен быть примерно следующим:
{
"Properties": {
"GraphQuery": "ACTOR(ME, OR(action:1001, action:1003))",
"ListId": "b4592971-f45e-41ac-8330-ca34b61834a4",
"ListItemId": 10,
"TermId": "79334302-07c2-4c37-9bfb-7b64bdd64877",
"TermSetId": "f4e59d91-7c8a-4d1c-b346-fd6caef3a64a",
"TermStoreId": "fd4146d3-7c5a-4c73-9e85-657646eab417"
},
"PropertiesJson": "{\"GraphQuery\":\"ACTOR(ME, OR(action:1001, action:1003))\",\"ListId\":\"b4592971-f45e-41ac-8330-ca34b61834a4\",\"ListItemId\":10,\"TermId\":\"79334302-07c2-4c37-9bfb-7b64bdd64877\",\"TermSetId\":\"f4e59d91-7c8a-4d1c-b346-fd6caef3a64a\",\"TermStoreId\":\"fd4146d3-7c5a-4c73-9e85-657646eab417\"}",
"ClientType": "AllResultsQuery",
"UpdateAjaxNavigate": true,
"SummaryLength": 180,
"DesiredSnippetLength": 90,
"PersonalizedQuery": false,
"FallbackRefinementFilters": null,
"IgnoreStaleServerQuery": true,
"RenderTemplateId": "DefaultDataProvider",
"AlternateErrorMessage": null,
"Title": "",
"ClientFunction": "",
"ClientFunctionDetails": ""
}
Сохраняем изменения и добавляем на страницу веб-часть, используя импорт:
Готово
Теперь пользователи смогут искать на портале документы, связанные с ними. Аналогично можно реализовать поиск среди коллег, с которыми они работают.
Смотрите также
Query the Office Graph using GQL and SharePoint Online Search REST APIs