Опубликован: 04.05.2010 | Уровень: для всех | Доступ: платный
Практическая работа 6:

Применение поисковых технологий в Интернет-магазине

< Лекция 15 || Практическая работа 6: 1234 || Практическая работа 7 >

21.4. Создание файла описания поискового расширения

Теперь необходимо разработать само поисковое расширение. Как уже отмечалось, это небольшой файл в формате xml.

21.4.1. Структура и формат файла описания OpenSearch

Файлы описания OpenSearch – это небольшие XML -файлы, содержащие описание поставщика поиска для браузера Internet Explorer 8. В табл. 21.1 описываются значения, используемые в файле описания OpenSearch.

Таблица 21.1. Файл описания OpenSearch
Значение Описание
ShortName (обязательный параметр) Имя поставщика поиска, отображаемое при выборе поставщика в поле мгновенного поиска.
URL (обязательный параметр) URL-адрес для основных поисковых запросов поставщика. Необходимо указывать абсолютный URL-адрес.
Image (необязательный параметр) Указатель на файл значка, связанного с поставщиком поиска на веб-сайте. Этот значок отображается рядом с именем поставщика в поле мгновенного поиска. Если не указан допустимый файл значка ярлыка, используется общий значок.
Suggestions URL ( JSON ) (необязательный параметр) URL-адрес, по которому могут быть извлечены варианты поиска с использованием нотации объектов JavaScript ( JSON ).
Suggestions URL ( XML ) (необязательный параметр) URL-адрес, по которому могут быть извлечены варианты поиска в формате XML.
PreviewUrl (необязательный параметр) URL-адрес для отображения результатов в окне предварительного просмотра ускорителя.

Ниже приведен образец файла описания OpenSearch, в котором определяется тип предоставляемых поисковых служб:

<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" 
                       xmlns:ie="http://schemas.microsoft.com/Search/2008/">
  <ShortName>My Custom Search</ShortName>
  <Image height="16" width="16" type="image/icon">
     http://example.com/example.ico
  </Image>
  <Url type="text/html" 
       template="http://example.com/search.aspx?q={searchTerms}&amp;source=IE"/>
  <Url type="application/x-suggestions+json" 
       template="http://suggestions.example.com/search.aspx?q={searchTerms}"/>
  <Url type="application/x-suggestions+xml" 
       template="http://suggestions.example.com/search.aspx?q={searchTerms}"/>
  <ie:PreviewUrl type="text/html" 
       template="http://suggestions.example.com/search.aspx?q={searchTerms}"/>
</OpenSearchDescription>

Каждый файл описания OpenSearch должен содержать имя поставщика и URL-адрес поиска. При отсутствии этих элементов установка поставщика поиска в браузере Internet Explorer 8 будет невозможна. В строке запроса каждого URL-адреса поиска должна содержаться фраза "{searchTerms}". При использовании этого поставщика для поиска в Internet Explorer 8 фраза "{searchTerms}" заменяется строкой запроса, введенной пользователем в поле мгновенного поиска. В файл описания OpenSearch следует включать значок (аналог фавикона в браузере). Если браузеру Internet Explorer 8 не удается найти значок, указанный с помощью атрибута "Image", поставщик представляется в меню быстрого выбора с помощью общего значка06_10.

21.4.2. Создание файла описания поискового расширения для Интернет-магазина

Добавим в корень проекта файл Search.xml следующей структуры:

<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
  <ShortName>Adventure Works</ShortName>
  <Url type="text/html" 
       template="http://localhost:31770/AWCDShop/products/ProductsSearch.aspx?query={searchTerms}" />
  <Url type="application/x-suggestions+xml" 
       template="http://localhost:31770/AWCDShop/SearchSuggestion.ashx?query={searchTerms}"/>
</OpenSearchDescription>

Как видно из описания, мы не указываем иконку для нашего поиска, а также подсказки в формате JSON. При этом при использовании поиска, пользователь будет перенаправляться на только что разработанную страницу products/ProductsSearch.aspx. Строку, описывающую доступ к подсказкам рассмотрим позднее.

21.5. Добавление поставщика поиска на страницу сайта

Теперь необходимо уведомить пользователей нашего магазина о том, что сайт предоставляет собственное поисковое расширение для браузера. Существует два способа уведомления пользователя о поставщике поиска. Первый способ заключается в предоставлении ссылки или кнопки, указывающей на файл описания. В этом случае для установки поставщика пользователям требуется выполнить определенные действия. Второй способ предусматривает обеспечение возможности обнаружения поставщика поиска. В этом случае в верхней части веб-страницы необходимо указать строку кода, которая позволяет браузеру Internet Explorer 8 обнаруживать поставщик при просмотре сайта пользователями.

Ниже приведен пример кода, обеспечивающего добавление поставщика поиска при щелчке ссылки пользователем:

<a href="#"
onclick="window.external.AddSearchProvider('http://www.example.com/provider.xml')">Add Search Provider Example</a>

В этом примере вызывается метод AddSearchProvider. Метод AddSearchProvider доступен из объекта external объекта window. При выполнении этого кода на HTML-странице в браузере Internet Explorer 8 открывается диалоговое окно "Добавление поставщика поиска".

Второй способ информирования пользователя о наличии поискового расширения предусматривает обнаружение поставщика поиска браузером. Это обеспечивается посредством добавления элемента link в объект head веб-страницы. В следующем примере кода выполняется обнаружение поставщика поиска браузером Internet Explorer 8:

<link title="My Provider" rel="search"
      type="application/opensearchdescription+xml"
      href="http://www.example.com/provider.xml">

Атрибуту rel необходимо присвоить значение " search ", а атрибуту type значение " application/opensearchdescription+xml ". Значение атрибута title отображается в раскрывающемся списке поля мгновенного поиска. Атрибут href содержит абсолютный или относительный URL-адрес, определяющий местоположение файла описания OpenSearch.

При загрузке страницы в браузер Internet Explorer 8 цвет стрелки в раскрывающемся списке поля мгновенного поиска изменяется на оранжевый, что свидетельствует о добавлении в него нового поставщика. Прежде чем добавлять новые поставщики в список, можно ознакомиться с ними. Если пользователь решает установить поставщик поиска, открывается диалоговое окно "Добавление поставщика поиска".

Расположим на странице master.master в теге head следующий код:

<link 	rel="search" 	
      type="application/opensearchdescription+xml" 	
      href="http://localhost:31770/AWCDShop/Search.xml" 	
      title="Adventure Works 1" />

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

21.6. Реализация подсказок

Теперь перейдем к рассмотрению способов реализации подсказок. В IE поддерживается два способа, стандартный который поддерживают все браузеры, в формате JSON, и расширенный, в формате XML.

21.6.1. Описание создания JSON подсказок

Начиная с версии Internet Explorer 8, в поле мгновенного поиска поддерживаются различные варианты поиска. По мере ввода пользователем текста в поле поиска браузер Internet Explorer 8 может предлагать варианты и отправлять в поставщик запросы, содержащие текущую строку поиска. Кроме того, предложенные варианты могут помочь в составлении более эффективных условий поиска. В Internet Explorer 8 поддерживается два формата вариантов поиска: JSON и XML. Формат JSON поддерживает текстовые варианты поиска, которые могут быть дополнены описаниями и URL-адресами. Формат XML поддерживает все виды контента, доступные для вариантов JSON, а также визуальные варианты и названия разделов.

Варианты поиска JSON возвращаются в виде массива массивов Microsoft JScript. Этот массив содержит четыре значения (табл. 21.2).

Таблица 21.2. Значения массива Microsoft JScript
Значение Описание
Строка запроса (обязательный параметр) Запрашиваемое условие поиска. Например, если в браузере запрашивается вариант для термина " xbox ", в качестве строки запроса необходимо использовать строку " xbox ". Чтобы обеспечить соответствие возвращаемых вариантов запрашиваемому условию поиска, строка запроса возвращается в виде массива.
Массив вариантов (обязательный параметр) Варианты для заданной строки запроса.
Массив описаний (необязательный параметр) Дополнительные строки, содержащие дополнительные сведения или контекст для заданного варианта.
Массив URL-адресов запроса (необязательный параметр) Список URL-адресов, которые следует использовать при выборе пользователем заданного варианта. Эти URL-адреса используются в качестве мгновенного ответа для перенаправления пользователя на заданный URL-адрес вместо страницы результатов поиска.

В ответе на запрос JSON должны возвращаться строка запроса и массив вариантов. Ниже приведен пример простого ответа на запрос JSON, в котором не указаны описания и URL-адреса.

["xbox",
	["Xbox 360", "Xbox cheats", "Xbox 360 games"]]

Для создания более эффективных условий поиска вместе с вариантами можно предлагать описание. Чтобы создать ответ, можно добавить URL-адреса запроса. Если предлагается URL-адрес запроса, при выборе пользователем соответствующего варианта браузер Internet Explorer 8 переходит непосредственно по этому URL-адресу, а не на страницу результатов поиска. Ниже приведен пример подробного ответа на запрос JSON.

["xbox",
	["Xbox 360", "Xbox cheats", "Xbox 360 games"], 
	["The official Xbox website from Microsoft", "Codes and walkthroughs", "Games and accessories"],	
	["http://www.xbox.com","http://www.example.com/xboxcheatcodes.aspx", "http://www.example.com/games"]]

В этом ответе на запрос JSON первый вариант поиска состоит из следующих элементов:

  • первый элемент первого массива (Xbox 360);
  • первый элемент второго массива (The official Xbox website from Microsoft);
  • первый элемент третьего массива (http://www.xbox.com).

При использовании предыдущего ответа на запрос получаются результаты, показанные на рис.21.6.

Подсказки поискового расширения Microsoft Live

Рис. 21.6. Подсказки поискового расширения Microsoft Live
< Лекция 15 || Практическая работа 6: 1234 || Практическая работа 7 >
Владимир Тадеуш
Владимир Тадеуш
Украина
Кирилл Дубовик
Кирилл Дубовик
Россия, Петрозаводск