- О предложении Freebase
- Добавление предложений Freebase на ваш сайт
- Варианты конфигурации
- Изменение CSS
- Как работают события
- Дополнительная информация и часто задаваемые вопросы
- Примеры и рецепты
О предложении Freebase
Freebase Suggest — это плагин jQuery, который добавляет автозаполнение тем Freebase в поля поиска на вашем сайте. Пользователи начинают вводить текст, а виджет предлагает подходящие совпадения из миллионов тем на Freebase.com или любого подмножества типов, таких как «Люди», «Местоположения» или «Животные». Всплывающие темы помогают пользователю выбрать правильный элемент, который однозначно идентифицируется с помощью идентификатора Freebase.
Функции
- Кроссбраузерный — основан на jQuery , протестирован на IE7+, FF2+, Safari 3+ и Chrome (минимальная версия jquery — 1.4.4)
- Междоменный. Прокси-серверы не требуются благодаря JSONP .
- Размещено Google на gstatic.com
- Свободно! (Применяются стандартные условия Freebase и условия Google Developer API .)
Freebase предлагает в дикой природе
Сайты, которые, как известно, используют Freebase Suggest:
- Рецензии на книгу WSJ
- ContentTagger.org — демонстрация тегов из газеты Guardian.
- c0sm.org - Добавляйте знаменитостей на c0sm.
- geolocation.ws - Отметьте фотографии для объектов Freebase
Зачем использовать 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_1/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_1/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 поиска.
|
орфографии | Нить | 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 | Нить | Значение: /topic${id}?filter=suggest&limit=3&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} | 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-selected '. |
статус | Элемент, содержащий сообщения о состоянии. По умолчанию: ' fbs-status '. |
тип вещи | Элемент, содержащий заметный тип элемента. По умолчанию: ' fbs-item-type '. |
всплывающая панель | Внешний всплывающий контейнер. По умолчанию: ' |
Например:
$("#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
Дополнительные ограничения фильтрации и поиска см. в Руководстве по поиску .