Поиск в содержимом вложения статьи базы знаний
Можно использовать вложение статьи базы знаний для включения загружаемых файлов в статьи базы знаний. Можно также использовать веб-файлы для создания страниц вопросов и ответов с загружаемым содержимым.
Внимание
Поиск возможен только в файлах, которые прикреплены к статьям базы знаний. Поиск в файлах, которые прикреплены к веб-файлам, невозможен.
Можно настроить сайт Power Pages, чтобы позволить пользователям выполнять поиск в содержимом вложений статей базы знаний. Это помогает пользователям находить информацию, которую они хотят найти.
В статьях базы знаний индексируются любые вложения с определенным префиксом.
Для индексации вложений статьи базы знаний необходимо создать следующие параметры сайта и установить для них значение True:
Параметр сайта | Описание |
---|---|
Search/IndexNotesAttachments | Указывает, требуется ли индексация содержимого вложений в статьях базы знаний. По умолчанию установлено значение False. |
KnowledgeManagement/DisplayNotes | Указывает, требуется ли отображать вложения статей базы знаний. По умолчанию установлено значение False. |
При поиске термина результаты поиска также включают вложения. Если условие поиска соответствует вложению статьи базы знаний, ссылка на соответствующую статью базы знаний также предоставляется. Чтобы посмотреть загружаемые вложения, выберите Загрузки в разделе Тип записей в левой панели. Чтобы изменить подпись Загрузки, измените фрагмент содержимого Search/Facet/Downloads. По умолчанию задано значение Загрузки.
Заметка
Поиск Dataverse должен быть включен в вашей среде, чтобы использовать эту функцию.
Поиск во вложениях статей базы знаний
Если ваш сайт использует поиск Lucene .NET, вы можете разрешить поиск во вложениях статей базы знаний на веб-сайте, установив для параметра Синхронизация вложений в статьи базы знаний с сайтом значение Да в центре администрирования Dynamics 365 Customer Service или в приложении "Центр обслуживания клиентов". Вам не нужно настраивать этот параметр, если на вашем сайте используется поиск Dataverse. По умолчанию вы сможете выполнять поиск во вложениях к статьям базы знаний.
Это позволит поиску просматривать вложения статей базы знаний и предоставлять простой доступ к информации для потребителей знаний. Благодаря этой новой возможности вложения вам больше не нужно будет использовать вложения заметок для сайта. Вложения статьи базы знаний будут автоматически синхронизироваться с соответствующим вложением заметок. Дополнительные сведения: Обновление вложений статей базы знаний для портала
Обновление конфигураций сайта
Если у вас уже имелся веб-сайт до апреля 2018 и вы обновили сайт до последней версии, необходимо использовать следующие конфигурации, чтобы пользовательский интерфейс был таким же, как и при новой установке.
Фрагменты содержимого
Чтобы изменить подписи, отображаемые в результатах поиска для аннотаций и загрузок веб-файлов, создайте фрагмент содержимого Search/Facet/Downloads, затем задайте для него требуемое значение. По умолчанию используется значение Загрузки.
Веб-шаблоны
Веб-шаблон "Фасетный поиск — шаблон результатов" пересмотрен для отображения файлов, связанных со статьями базы знаний в качестве основных элементов результата поиска с соответствующей ссылкой на статью. Необходимо обновить "Фасетный поиск — шаблон результатов" до следующего источника:
{% assign openTag = '{{' %}
{% assign closingTag = '}}' %}
{%raw%}
<script id="search-view-results" type="text/x-handlebars-template">
{{#if items}}
<div class="page-header">
<h2>{%endraw%}{{openTag}} stringFormat "{{ resx.Search_Results_Format_String }}" firstResultNumber lastResultNumber itemCount {{closingTag}}{%raw%}
<em class="querytext">{{{query}}}</em>
{{#if isResetVisible}}
<a class="btn btn-default btn-sm facet-clear-all" role="button" title="{%endraw%}{{ snippets['Search/Facet/ClearConstraints'] | default: res['Search_Filter_Clear_All'] }}{%raw%}" tabIndex="0">{%endraw%}{{ snippets['Search/Facet/ClearConstraints'] | default: res['Search_Filter_Clear_All'] }}{%raw%}</a>
{{/if}}
</h2>
</div>
<ul>
{{#each items}}
<li>
<h3><a title="{{title}}" href="{{url}}">{{#if parent}}<span class="glyphicon glyphicon-file pull-left text-muted" aria-hidden="true"></span>{{/if}}{{title}}</a></h3>
<p class="fragment">{{{fragment}}}</p>
{{#if parent}}
<p class="small related-article">{%endraw%}{{ resx.Related_Article }}{%raw%}: <a title="{{parent.title}}" href="{{parent.absoluteUrl}}">{{parent.title}}</a></p>
{{/if}}
<ul class="note-group small list-unstyled">
{{#if relatedNotes}}
{{#each relatedNotes}}
<li class="note-item">
{{#if isImage}}
<a target="_blank" title="{{title}}" href="{{absoluteUrl}}"><span class="glyphicon glyphicon-file" aria-hidden="true"></span> {{title}}</a>
{{else}}
<a title="{{title}}" href="{{absoluteUrl}}"><span class="glyphicon glyphicon-file" aria-hidden="true"></span> {{title}}</a>
{{/if}}
<p class="fragment text-muted">{{{fragment}}}</p>
</li>
{{/each}}
{{/if}}
{{#if relatedAttachments}}
{{#each relatedAttachments}}
<li class="note-item">
{{#if isImage}}
<a id="kbattachment-{{entityID}}" href="javascript:downloadKbAttachmentFile('kbattachment-{{entityID}}', '{{title}}', {{fileSize}}, '{{fileType}}', '{{downloadBlockUrl}}', '{{initializeDownloadUrl}}')"><span class="glyphicon glyphicon-file" aria-hidden="true"></span> {{title}}</a>
{{else}}
<a id="kbattachment-{{entityID}}" title="{{title}}" href="javascript:downloadKbAttachmentFile('kbattachment-{{entityID}}', '{{title}}', {{fileSize}}, '{{fileType}}', '{{downloadBlockUrl}}', '{{initializeDownloadUrl}}')"><span class="glyphicon glyphicon-file" aria-hidden="true"></span> {{title}}</a>
{{/if}}
<p class="fragment text-muted">{{{fragment}}}</p>
</li>
{{/each}}
{{/if}}
</ul>
</li>
{{/each}}
</ul>
{{else}}
<h2>{%endraw%}{{ resx.Search_No_Results_Found }}{%raw%}<em class="querytext">{{{query}}}</em>
{{#if isResetVisible}}
<a class="btn btn-default btn-sm facet-clear-all" role="button" title="{%endraw%}{{ snippets['Search/Facet/ClearConstraints'] | default: res['Search_Filter_Clear_All'] }}{%raw%}" tabIndex="0">{%endraw%}{{ snippets['Search/Facet/ClearConstraints'] | default: res['Search_Filter_Clear_All'] }}{%raw%}</a>
{{/if}}
</h2>
{{/if}}
</script>
<script type="text/javascript">
function downloadKbAttachmentFile(attachmentElementId, fileName, fileSize, mimeType, downloadBlockUrl, initializeUrl) {
// Download block API supports max 4MB block size
const blockSizeInBytes = 4096 * 1024;
const totalNumberOfBlocks = parseInt(fileSize / blockSizeInBytes + 1);
var fileContinuationToken = "";
var contentString = "";
var numberOfBlocksDownloaded = 0;
var blockNumberToContentMap = {};
function downloadBlockCallback(i, result) {
numberOfBlocksDownloaded++;
blockNumberToContentMap[i] = result;
if (numberOfBlocksDownloaded == totalNumberOfBlocks) {
for (var j = 0; j < totalNumberOfBlocks; j++) {
contentString += blockNumberToContentMap[j];
}
var isImage = mimeType.startsWith('image/');
const attachmentElement = document.getElementById(attachmentElementId);
if (isImage) {
const bodyByteString = atob(contentString);
const bodyBuffer = new ArrayBuffer(bodyByteString.length);
const bodyView = new Uint8Array(bodyBuffer);
for (var k = 0; k < bodyByteString.length; k++) {
bodyView[k] = bodyByteString.charCodeAt(k);
}
var imageUrl = URL.createObjectURL(new Blob([bodyBuffer], { type: mimeType }));
attachmentElement.href = imageUrl;
attachmentElement.target = "_blank";
}
else {
const linkSource = 'data:' + mimeType + ';base64,' + contentString;
attachmentElement.href = linkSource;
attachmentElement.download = fileName;
}
attachmentElement.click();
}
}
shell.ajaxSafePost({
type: 'GET',
url: initializeUrl,
success: function (result) {
fileContinuationToken = encodeURIComponent(result);
for (var i = 0; i < totalNumberOfBlocks; i++) {
url = downloadBlockUrl + "&blockNumber=" + i + "&fileContinuationToken=" + fileContinuationToken + "&blockSize=" + blockSizeInBytes;
var x = downloadBlockCallback.bind(this,i);
shell.ajaxSafePost({
type: 'GET',
url: url,
success: (result) => { x(result) }
});
}
}
});
}
</script>
{%endraw%}
Параметры сайта
Необходимо добавить значение \_logicalname:annotation~0.9^0.25
в параметр сайта Search/Query. После добавления значение должно быть следующее:
+(@Query) \_title:(@Query) \_logicalname:knowledgearticle~0.9^0.3 \_logicalname:annotation~0.9^0.25 \_logicalname:adx_webpage~0.9^0.2 -\_logicalname:adx_webfile~0.9 adx_partialurl:(@Query) \_logicalname:adx_blogpost~0.9^0.1 -\_logicalname:adx_communityforumthread~0.9
Чтобы настроить фасетки для группирования заметкой, связанных со статьями базы знаний и веб-файлами в одну фасетку, измените имя параметра сайта Search/RecordTypeFacetsEntities и добавьте ;Downloads:annotation,adx_webfile
к его значению.
Чтобы позволить вложениям, связанным со статьями базы знаний, появляться на веб-сайте и в результатах поиска, измените параметр сайта KnowledgeManagement/DisplayNotes и задайте для него значение True. Параметр сайта KnowledgeManagement/NotesFilter содержит значение префикса, которое необходимо добавить в начало поля текста примечания в примечаниях; только примечания с указанным значением префикса будут отображаться на веб-странице. По умолчанию значение равно *WEB*, однако его можно изменить с помощью параметра сайта.
Для включения индексирования файловых вложений, связанных с примечаниями, создайте параметр сайта Search/IndexNotesAttachments и установите для него значение True.