Виджет поиска Freebase

  1. О предложении Freebase
  2. Добавление предложений Freebase на ваш сайт
  3. Варианты конфигурации
  4. Изменение CSS
  5. Как работают события
  6. Дополнительная информация и часто задаваемые вопросы
  7. Примеры и рецепты

О предложении Freebase

Freebase Suggest — это плагин jQuery, который добавляет автозаполнение тем Freebase в поля поиска на вашем сайте. Пользователи начинают вводить текст, а виджет предлагает подходящие совпадения из миллионов тем на Freebase.com или любого подмножества типов, таких как «Люди», «Местоположения» или «Животные». Всплывающие темы помогают пользователю выбрать правильный элемент, который однозначно идентифицируется с помощью идентификатора Freebase.

Freebase Suggest.png

Функции

  • Кроссбраузерный — основан на jQuery , протестирован на IE7+, FF2+, Safari 3+ и Chrome (минимальная версия jquery — 1.4.4)
  • Междоменный. Прокси-серверы не требуются благодаря JSONP .
  • Размещено Google на gstatic.com
  • Свободно! (Применяются стандартные условия Freebase и условия Google Developer API .)

Попробуйте!

Freebase предлагает в дикой природе

Сайты, которые, как известно, используют Freebase Suggest:

Зачем использовать Freebase Suggest?

  • Благодаря автозаполнению ваши пользователи вводят меньше данных, чтобы ввести больше данных.
  • Ввод данных весело и точно!
  • Снизьте когнитивную нагрузку на своих пользователей благодаря изображениям и описаниям во всплывающих окнах темы.
  • Используйте надежные идентификаторы, а не текстовые ключевые слова. Имя «Стинг» неоднозначно, но идентификаторы Freebase /en/sting и /en/sting_1959 — нет.
  • Избегайте повторяющихся имен для одного и того же объекта. Puff Daddy, P. Diddy, Sean Combs ссылаются на /en/sean_combs .

Добавление Freebase Suggest на ваш сайт

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

Код для размещения на вашем веб-сайте

Включите следующее в <head> вашего HTML-документа:

<link type="text/css" rel="stylesheet" href="https://www.gstatic.com/freebase/suggest/4_2/suggest.min.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
<script type="text/javascript" src="https://www.gstatic.com/freebase/suggest/4_2/suggest.min.js"></script>
<script type="text/javascript">
$(function() {
  $("#myinput").suggest({filter:'(all type:/film/director)'});
});
</script>

Затем используйте поле ввода в вашем документе <body> , подобное этому:

<input type="text" id="myinput"/>

Получение ключа API

Получение ключа API позволяет вашему приложению выполнять запросы Suggest. Без ключа API виджет будет работать в ограниченных целях тестирования. Чтобы получить ключ, следуйте инструкциям на странице « Начало работы ».

Как только вы получите ключ, передайте его в Freebase Suggest примерно так:

$(function() {
  $("#myinput").suggest({ "key" : "<your api key>"});
});

Варианты конфигурации

В следующей таблице описаны параметры конфигурации Freebase Suggest.

Имя Тип По умолчанию Описание
передовой логический истинный Если true, Freebase Suggest будет анализировать и обрабатывать встроенные пары name:value во входных данных как дополнительные ограничения фильтра. Например, для 'bob type:artist contributed_to:"Love and Theft"' в поиск передается дополнительное ограничение фильтра '(all type:artist contributed_to:"Love and Theft")' . Кроме того, если установлено значение «продвинутый», Freebase Suggest распознает идентификаторы Freebase и MID, чтобы можно было напрямую искать объект по его идентификатору или MID.
точный логический ЛОЖЬ Если значение равно true, это указывает, что API поиска возвращает только точные совпадения (того, что находится на входе). Это значение прозрачно передается API поиска.
фильтр Нить нулевой Укажите ограничения фильтра поиска по умолчанию, которые будут прозрачно переданы API поиска в качестве параметра (параметров) фильтра. Например, чтобы ограничить Freebase Suggest поиском только по колледжам и/или университетам, используйте в качестве фильтра « (all type:/education/university) ». Полный список доступных поисковых фильтров см. в разделе API поиска или Текстовые ограничения .
ключ Нить нулевой Предоставьте ключ API для API поиска по умолчанию, указанный service_url + service_path . Вы можете получить его в консоли API .
язык Нить нулевой Параметр lang принимает список кодов языков, разделенных запятыми, что приводит к тому, что поиск выполняется на всех указанных языках, а результаты ранжируются на первом языке в списке и отображаются на первом языке списка, который имеет имя для организация. В настоящее время поддерживаются 18 языков: en (английский), es (испанский), fr (французский), de (немецкий), it (итальянский), pt (португальский), zh (китайский), ja (японский), ko (корейский). ), ru (русский), sv (шведский), fi (финский), da (датский), nl (голландский), el (греческий), ro (румынский), tr (турецкий), hu (венгерский). Английский имеет наибольшее покрытие и является языком по умолчанию. Это значение прозрачно передается API поиска.
подсчет очков Нить нулевой Параметр scoring позволяет контролировать, какие компоненты оценки релевантности используются для вычисления окончательной оценки. Это значение прозрачно передается API поиска.
  • entity : использовать баллы релевантности FREEBASE и Google, по умолчанию отсутствующие баллы Google равны 1,0. Это значение по умолчанию.
  • freebase : используйте только показатель релевантности Freebase.
  • schema : используйте при поиске объектов схемы, таких как типы, свойства или домены. Счетчики ссылок объектов схемы вычисляются по-разному.
орфографии Нить always Допустимые значения always : no_results , no_spelling . Если запрашивается правописание, а поиск возвращает исправление правописания, Freebase Suggest отобразит исправление в списке Suggest. Это значение прозрачно передается службе поиска.
Вылететь логическое, bottom истинный Определяет, показывать ли всплывающее описание при наведении. Если bottom , показать всплывающее окно в нижней части списка предложений. Если список предложений отображается над полем ввода, всплывающее меню отображается поверх списка. Если значение равно true, Suggest сделает все возможное, чтобы всплывающее меню отображалось либо в левой, либо в правой части списка.
предложить_новый Нить нулевой Текст, который будет отображаться под списком предложений. При выборе срабатывает fb-select-new .
css Объект Перезапишите имена классов CSS по умолчанию, используемые для различных элементов Freebase Suggest. Дополнительные сведения см. в разделе Изменение CSS .
css_prefix Нить нулевой Вы можете указать префикс, который будет добавляться к именам классов элементов Suggest. Например, если css_prefix равен « foo- », имена контейнеров будут « foo-fbs-pane » и « foo-fbs-flyoutpane ».
show_id логический истинный Отображает notable значение, возвращаемое поиском. Однако, если он недоступен и это правда, он отображает идентификатор элемента.
service_url Нить Значение: https://www.googleapis.com/freebase/v1 Это базовый URL-адрес службы Suggest.
путь_службы Нить /search service_url + service_path = URL-адрес службы Suggest.
flyout_service_url Нить нулевой Базовый URL-адрес всплывающей службы. Если null, по умолчанию используется service_url .
flyout_service_path Нить Значение: /search?filter=(all mid:${id})&output=(notable:/client/summary description type)&key=${key} flyout_service_url + flyout_service_path = URL всплывающей службы. ' ${id} ' и ' {key} ' заменяются идентификатором наведенного элемента и ключом API соответственно.
flyout_image_service_url Нить нулевой Базовый URL-адрес изображения во всплывающем меню. Если null, по умолчанию используется service_url .
flyout_image_service_path Нить Значение: /image${id}?maxwidth=75&key=${key}&errorid=/freebase/no_image_png flyout_image_service_url + flyout_image_service_path = URL сервиса изображений. ' ${id} ' и ' {key} ' будут заменены идентификатором наведенного элемента и ключом API соответственно.
flyout_parent Строка (селектор jQuery) нулевой По умолчанию всплывающий контейнер добавляется к тексту документа и позиционируется абсолютно. flyout_parent указывает другого родителя, и всплывающее меню не будет абсолютно позиционировано.
выровнять Нить нулевой Если align не установлено, список предложений выравнивается по «левому» или «правому» полю ввода в зависимости от его положения в документе. Чтобы переопределить это поведение и установить его выравнивание явно, установите для align значение « left » или « right ».
статус Массив[4](Строка) ["Начните печатать, чтобы получить предложения...", "Поиск...", "Выберите элемент из списка:", "Извините, что-то пошло не так. Повторите попытку позже"] Сообщения о состоянии, которые появляются на 4 разных этапах предложения; [0] Когда поле ввода пусто и получает фокус. [1] при извлечении результатов, [2] при отображении результатов, [3] при возникновении ошибки службы Suggest. Вы можете переопределить эти сообщения о состоянии по умолчанию, передав другой массив строк, соответствующих 4 различным этапам.
родитель Строка (селектор jQuery) нулевой По умолчанию список предложений добавляется к тексту документа и позиционируется абсолютно. Используйте parent , чтобы указать другого родителя, и список не будет позиционироваться абсолютно.
оживлять логический ЛОЖЬ Если true, отображение списка предложений будет анимировано с использованием эффекта jQuery slideDown.
xhr_delay Целое (мс) 200 Указывает задержку перед возвратом результатов. Это полезно в том случае, когда mql_filters сложны, а Suggest API может занять больше или примерно столько же времени, чтобы ответить, чем жестко запрограммированная задержка, что приводит к некоторому ухудшению взаимодействия с пользователем и ненужной нагрузке.
zИндекс Целое число нулевой Устанавливает z-индекс большинства внешних контейнеров ( fbs-pane , fbs-flyoutpane ). Это полезно при использовании Freebase Suggest в диалоговых окнах, чтобы элементы Suggest отображались сверху.

Изменение CSS

Классы CSS по умолчанию, используемые Freebase Suggest, можно переопределить, передав карту альтернативных значений для имен классов CSS с помощью параметра конфигурации css . В следующей таблице описаны классы в CSS по умолчанию.

панель Внешний контейнер списка предложений.

По умолчанию: ' fbs-pane '

список Список предложений.

По умолчанию: ' fbs-list '

вещь Предложить элементы списка.

По умолчанию: ' fbs-item '.

название предмета Элемент, содержащий имя элемента.

По умолчанию: ' fbs-item-name '

выбран Текущий выделенный/выбранный элемент. По умолчанию: ' fbs-selected '.
статус Элемент, содержащий сообщения о состоянии. По умолчанию: ' fbs-status '.
тип вещи Элемент, содержащий заметный тип элемента. По умолчанию: ' fbs-item-type '.
всплывающая панель Внешний всплывающий контейнер.

По умолчанию: ' fbs-flyoutpane '

Например:

$("#myinput").suggest({
  "css": {
    "pane": "custom-pane-class",
    "list": "custom-list-class"
  }
});

Как работают события

Freebase Suggest запускает следующие события в контексте ввода, с которым он инициализируется.

fb-select — когда элемент выбран из списка предложений. Событие сопровождается объектом данных, где data.name и data.id представляют имя и идентификатор выбранного элемента.

$("#myinput").suggest().bind("fb-select", function(e, data) { ... });

fb-select-new — когда включена опция suggest_new , это событие запускается при выборе элемента Suggest_new. Событие сопровождается входным значением.

$("#myinput").suggest({'suggest_new': 'This is the suggest new text'}).bind("fb-select-new", function(e, val) { ... });

Часто задаваемые вопросы и дополнительная информация

Вопросы, отчеты об ошибках и отзывы очень приветствуются в группе Freebase Developers Google или в списке вопросов (выберите компонент «Поиск/Предложение»).

Я только что создал новую тему, но она не отображается в предложении. Что происходит?

Freebase Suggest использует API поиска для предоставления своих результатов, которые обновляются практически в режиме реального времени. Новые темы обычно появляются в течение минуты или около того, но это может занять больше времени, если система находится под высокой нагрузкой.

Примеры и рецепты

  • Freebase Suggest Recipes — поделитесь своими советами по использованию Suggest в нашей Wiki.

Основное использование

$("#example1")
 .suggest()
 .bind("fb-select", function(e, data) {
   alert(data.name + ", " + data.id);
});

Попробуйте!

Предложить новый

$("#example2")
 .suggest({
   "suggest_new": "Click on me if you don't see anything in the list"
 })
 .bind("fb-select", function(e, data) {
   alert(data.name + ", " + data.id);
 })
 .bind("fb-select-new", function(e, val) {
   alert("Suggest new: " + val);
 });

Попробуйте!

Ограничение предложений с помощью фильтра

Предлагайте фильмы режиссера Стивена Спилберга.

$("#example5")
.suggest({
   "filter": "(all type:/film/film contributor:\"Steven Spielberg #directed_by\")"
})
.bind("fb-select", function(e, data) {
   alert(data.name + ", " + data.id);
});

Попробуйте!

Фильтрация из текстового поля

Можно отфильтровать результаты, введя любое из ограничений фильтра непосредственно в поле «Предложить». Например, чтобы найти книги по садоводству, попробуйте:

gardening type:/book/book
gardening type:book

Фактически, вы можете использовать любые ограничения метасхемы поиска для фильтрации результатов. Например, чтобы найти всех людей, которые " contributed_to в" фильм "Спасти рядового Райана", попробуйте:

contributed_to:"Saving Private Ryan" type:/people/person

Как указано в параметрах конфигурации , lang , scoring , spell и exact значение прозрачно передаются API поиска. Вы также можете перезаписать их встроенными. Например, если Freebase Suggest инициализирован с lang:"en" и вы хотите также искать французские имена, попробуйте:

babar lang:fr,en

Дополнительные ограничения фильтрации и поиска см. в Руководстве по поиску .