Динамические аспекты

Динамический аспект используется для автоматического создания новых выборок диапазона во время поиска. Фасеты включаются динамически на основе результатов поиска.

Функция Dynamic Facets не включена в Adobe Search&Promote по умолчанию. Обратитесь в службу технической поддержки, чтобы активировать функцию для вашего использования.

В нашем предыдущем уроке мы увидели, как включить статический аспект для результатов поиска. Обратитесь к ссылке ниже для получения подробной информации, шаги будут такими же для динамического аспекта с небольшими изменениями.



Фасеты, которые малочисленны на вашем веб-сайте и появляются только для подмножества поисковых запросов, являются хорошими кандидатами на то, чтобы сделать их динамическими.

В нашем примере продукт с типом «Смотреть» будет иметь дополнительный атрибут с именем «размер», а аспект, связанный с «размером», применим только для поиска по ключевому слову «Смотреть».

Поиск по ключевому слову «Смотреть» покажет два аспекта «productType» (статический) и «размер» (динамический), но поиск по «Книге» покажет только аспект «productType» (статический).

Настройка динамического аспекта

Для включения динамического аспекта требуется некоторая дополнительная конфигурация по сравнению со статическим аспектом (см. руководство по статическим аспектам для основных конфигураций)

Включен дополнительный атрибут товара в файл фида на основе Типа товара — «размер», атрибут «размер» применим только для типа товара «Смотреть».

<feed xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0">
 <channel>
  <title>Product Feed</title>
  <Item>
   <link>https://www.example.com/product-title/p/prod1</link>
   <title>
   <![CDATA[Book Prod1 Title]]>
   </title>
   <description>
   <![CDATA[<p>Prod1 description</p>]]>
   </description>
   <productType>Book</productType>
   <ProductId>prod1</ProductId>
   <imageUrl>/content/dam/Images/product/prod1.jpg</imageUrl>
  </Item>
  <Item>
   <link>https://www.example.com/product-title/p/prod2</link> 
   <title>
   <![CDATA[Book Prod2 title]]>
   </title>
   <description>
   <![CDATA[<p>Prod2 description</p>]]>
   </description>
   <productType>Book</productType>
   <ProductId>prod2</ProductId>
   <imageUrl>/content/dam/Images/product/prod2.jpg</imageUrl>
  </Item>
<Item>
   <link>https://www.example.com/product-title/p/prod3</link>
   <title>
   <![CDATA[Watch Prod3 Title]]>
   </title>
   <description>
   <![CDATA[<p>Prod3 description</p>]]>
   </description>
   <productType>Watch</productType>
    <size>10</size>
   <ProductId>prod3</ProductId>
   <imageUrl>/content/dam/Images/product/prod3.jpg</imageUrl>
  </Item>
  <Item>
   <link>https://www.example.com/product-title/p/prod4</link>
   <title>
   <![CDATA[Watch Prod4 Title]]>
   </title>
   <description>
   <![CDATA[<p>Prod4 description</p>]]>
   </description>
   <productType>Watch</productType>
    <size>20</size>
   <ProductId>prod4</ProductId>
   <imageUrl>/content/dam/Images/product/prod4.jpg</imageUrl>
  </Item>
  </channel>
</feed>

Создайте новое определение метаданных для поля «размер», Настройки → Метаданные → Определения.

Включить параметр Dynamic Facet для метаданных

Обновите конфигурации IndexConnector с новым полем метаданных «размер», «Настройки» → «Сканирование» → «Index Connector».

Настройте фасет с именем «размер» — в фасете нет настройки «Динамический фасет», только конфигурация находится в базовой конфигурации метаданных (уже включена), Дизайн → Навигация → Фасеты

Настройте новое правило очистки запроса, Правила → Очистка запроса, чтобы установить внутренний параметр «sp_sfvl_df_count». Параметр sp_sfvl_df_count
определяет общее количество возвращаемых полей динамического фасета.

Обновите серверный транспорт с поддержкой Dynamic Facet.

<search-content-type-header charset="UTF-8">
{ 
 "general": {
        "query" : "<search-query />",  
        "total" : "<search-total />",
        "lower" : "<search-lower />",
        "upper" : "<search-upper />"
},
 "facets" : [
        {
            "name" : "productType",
            "values" : [<search-field-value-list name="productType" quotes="yes"  data="values" sortby="values" encoding="json" />],
            "counts" : [<search-field-value-list name="productType" quotes="no"  data="results" sortby="values" />]
        }<search-dynamic-facet-fields>,
        {
            "name" : "<search-dynamic-facet-field-name>",
            "dynamic-facet" : 1,
            "values" : 
                    [<search-field-value-list quotes="yes" commas="yes" data="values" sortby="values" encoding="json" />],
                    "counts" : [<search-field-value-list quotes="yes" commas="yes" data="results" sortby="values" />]
        }</search-dynamic-facet-fields>
    ],
"results" : [
  <search-results>
  {
   "fields" :
   [
    {
     "name" : "mdi",
     "value" : "<search-display-field name="mdi" length="500"  encoding="json" />"
    },
{
     "name" : "title",
     "value" : "<search-display-field name="title" encoding="json" />"
    },
    {
     "name" : "productType",
     "value" : "<search-display-field name="productType" encoding="json" />"
    },
    {
     "name" : "size",
     "value" : "<search-display-field name="size" encoding="json" />"
    }
            ]  
        } 
        <search-if-not-last>,</search-if-not-last>
  </search-results>
 ]
}

Обновите транспорт презентации с помощью Dynamic Facet Support

<guided-content-type-header content="application/json" />
<guided-if-query-param-defined gsname="callback" /><guided-query-param gsname="callback" />(</guided-if-query-param-defined>
    { 
        "general" :
        {
            "query" : "<guided-query-param gsname='q' />",
            "total" : "<guided-results-total />",
            "page_lower" : "<guided-results-lower>",
            "page_upper" : "<guided-results-upper>",
            "page_total": "<guided-page-total/>" 
        },  
        "facets" :
        [
            <guided-zone gsname="Facets_Default">    
                    <guided-facet  gsname="productType" >
                    { 
                        "label" : "<guided-facet-display-name gsname="productType" />",
                        "long" : <guided-if-facet-long>true<guided-else-facet-long>false</guided-if-facet-long>,
                        <guided-if-facet-selected>
                        "selected" : true,
                        "undolink" : "<guided-facet-undo-path gsname="productType" />",
                        </guided-if-facet-selected>
                        "values" : 
                        [
                            <guided-facet-values>
                            {
                                "value" : "<guided-facet-value  escape="ijson">",
                                "selected" : "<guided-if-facet-value-selected>true<guided-else-facet-value-selected>false</guided-if-facet-value-selected>",
                                "count" : "<guided-facet-count>",
                                "link" : "<guided-facet-value-path>",
                                "undolink" : "<guided-facet-value-undo-path>",
                                "threshold" : <guided-if-facet-value-equals-length-threshold>true<guided-else-facet-value-equals-length-threshold>false</guided-if-facet-value-equals-length-threshold>
                            }<guided-if-not-last>,</guided-if-not-last>
                            </guided-facet-values>
                        ] 
                    }
                    </guided-facet>
            </guided-zone>
            <guided-zone gsname="Facets_Dynamic"> 
                 <guided-facet-rail gsname="__dynamic_facets"> 
                      <guided-facet  >
       ,{ 
           "label" : "<guided-facet-display-name  />",
     "long" : <guided-if-facet-long>true<guided-else-facet-long>false</guided-if-facet-long>,
      <guided-if-facet-selected>
          "selected" : true,
    "undolink" : "<guided-facet-undo-path  />",
      </guided-if-facet-selected>
      "values" : 
      [
         <guided-facet-values>
             {
         "value" : "<guided-facet-value  escape="ijson">",
         "selected" : "<guided-if-facet-value-selected>true<guided-else-facet-value-selected>false</guided-if-facet-value-selected>",
          "count" : "<guided-facet-count>",
          "link" : "<guided-facet-value-path>",
          "undolink" : "<guided-facet-value-undo-path>",
          "threshold" : <guided-if-facet-value-equals-length-threshold>true<guided-else-facet-value-equals-length-threshold>false</guided-if-facet-value-equals-length-threshold>
       }<guided-if-not-last>,</guided-if-not-last>
        </guided-facet-values>
        ] 
    }
                </guided-facet> 
     </guided-facet-rail> 
  </guided-zone>  
        ],
        "results" :
        [     
            <guided-results gsname="default">
            {
                "index" : "<guided-result-index />",
                "title" : "<guided-result-field gsname="title" escape="ijson" />",
                "productType" : "<guided-result-field gsname="productType" escape="ijson" />",
                "size" : "<guided-result-field gsname="size" escape="ijson" />"
                         
                
            }<guided-if-not-last>,</guided-if-not-last>
            </guided-results>
        ]
    } 
<guided-if-query-param-defined gsname="callback">)</guided-if-query-param-defined>

Конфигурации готовы, давайте теперь запустим индексацию Stage (обратите внимание, что конфигурация еще не запущена)

Индекс →Полный индекс →Поэтапный индекс →Выполнить полный индекс

Доступ http://stage-xxxxxxxxxxx.guided.ss-omtrdc.net/do=json&sp_staged=1&sp_q= Смотреть

xxxxxxxxxxx — номер аккаунта для поиска и продвижения

Это ответит данными JSON, которые содержат необходимые статические, динамические аспекты и метаданные.

{
  "general": {
    "query": "",
    "total": "2",
    "page_lower": "1",
    "page_upper": "2",
    "page_total": "1"
  },
  "facets": [
    {
      "label": "productType",
      "long": false,
      "values": [
        {
          "value": "Watch",
          "selected": "false",
          "count": "2",
          "link": "?do=json;i=1;q1=Watch;sp_q=Watch;sp_staged=1;x1=productType",
          "undolink": "",
          "threshold": false
        }
      ]
    },
    {
      "label": "size",
      "long": false,
      "values": [
        {
          "value": "10",
          "selected": "false",
          "count": "1",
          "link": "?do=json;i=1;q1=10;sp_q=Watch;sp_staged=1;x1=size",
          "undolink": "",
          "threshold": false
        },
        {
          "value": "20",
          "selected": "false",
          "count": "1",
          "link": "?do=json;i=1;q1=20;sp_q=Watch;sp_staged=1;x1=size",
          "undolink": "",
          "threshold": false
        }
      ]
    }
  ],
  "results": [
    {
      "index": "",
      "title": "Watch Prod3 Title",
      "productType": "Watch",
      "size": "10"
    },
    {
      "index": "",
      "title": "Watch Prod4 Title",
      "productType": "Watch",
      "size": "20"
    }
  ]
}

Конфигурацию можно активировать после успешной проверки и запустить текущий индекс → Полный индекс → Живой индекс → Запустить полный индекс.

URL-адрес для доступа к оперативным данным http://xxxxxxxxxxx.guided.ss-omtrdc.net/do=json&sp_q=Смотреть

Фасетные данные в ответе можно использовать для предоставления пользователям параметров фильтрации, чтобы сузить поиск по веб-сайту. Опция Dynamic Facet включает аспекты на основе данных поиска.

Первоначально опубликовано на https://www.albinsblog.com.