Поділитися через


Пошук у вмісті вкладення до статті бази знань

Можна використовувати вкладення до статті бази знань, щоб додавати завантажувані файли до статті бази знань. Можна також використовувати веб-файли для створення сторінки із поширеними запитаннями й відповідями із вмістом, що доступний для завантаження.

Важливо

Для пошуку лише тих файлів, які ви додаєте до статей бази знань. Файли, які ви додаєте до веб-файлів, які не придатні для пошуку.

Ви можете налаштувати сайт Power Pages так, щоб користувачі могли здійснювати пошук у вмісті вкладень до статей бази знань. Це дає можливість користувачам знаходити дані, які ви шукаєте.

У статтях бази знань індексуватимуться будь-які вкладення приміток із визначеним префіксом.

Для індексування вкладень до статті бази знань, слід створити такі параметри сайту та встановити для них значення Істина:

Настройка сайту Опис
Search/IndexNotesAttachments Вказує, чи слід індексувати вміст вкладень у статтях бази знань і вебфайлах. За замовчуванням задано значення Хибність.
KnowledgeManagement/DisplayNotes Указує, чи відображати вкладення до статті бази знань. За замовчуванням задано значення Хибність.

Під час пошуку терміну, результати пошуку також включатимуть вкладення. Якщо пошуковий запит збігається з вкладенням до статті бази знань, також вказується посилання на відповідну статтю бази знань. Щоб переглянути вкладення, доступні для завантаження, виберіть Завантаження в області Тип запису на панелі ліворуч. Щоб змінити мітку Завантаження, редагувати фрагмент вмісту 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>&nbsp;{{title}}</a>
                  {{else}}
                    <a title="{{title}}" href="{{absoluteUrl}}"><span class="glyphicon glyphicon-file" aria-hidden="true"></span>&nbsp;{{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>&nbsp;{{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>&nbsp;{{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 для параметра сайту Пошук/Запит. Після того, як його буде додано, це значення має бути таким:

+(@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 значення Істина. Параметр сайту KnowledgeManagement/NotesFilter містить значення префіксу, яке має вказуватися префіксом в текстовому полі примітки; на вебсайті відображатимуться лише нотатки із вказаним значенням префіксу. За замовчуванням значення *WEB*, але його можна змінити через налаштування сайту.

Щоб увімкнути індексування вкладених файлів, пов’язаних із примітками, створіть параметр сайту Search/IndexNotesAttachments і встановіть для нього значення Істина.