Подсказки при вводе ФИО сплошной строкой

Команда по формированию подсказок при вводе сплошного ФИО предназначена для упрощения и ускорения процедуры заполнения формы с именем персоны в рамках приложения пользователя. При использовании данной функции сервиса полагается, что приложение пользователя содержит форму, имеющую поле, в которое должно вводиться ФИО персоны в виде сплошной строки. Если форма содержит отдельные поля для фамилии, имени и отчества персоны, для формирования подсказок следует использовать команду получения подсказок при вводе дискретного ФИО: suggest/person/discrete.

Необходимость заполнения подобных форм возникает у пользователей при регистрации на сайтах интернет-магазинов и сервисов, в частности, на нашем сайте. Операторам банков и микрофинансовых организаций (МФО) приходится вводить ФИО при регистрации каждого нового клиента. Суммарное время, затрачиваемое на ввод этих данных, может быть значительным, кроме того, при вводе сложных имен возможны ошибки и опечатки.

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

Приведенная ниже форма демонстрирует работу данной функции. Для отображения списка подсказок достаточно начать вводить ФИО в следующее поле.

Варианты в списке ранжируются по уменьшению вероятности использования их пользователем. При поиске и ранжировании учитывается как самостоятельная популярность предлагаемого варианта завершения вводимой части ФИО, так и его сочетаемость с уже введенными частями. Сочетаемость компонентов имени подразумевает:

  • Соответствие пола (все компоненты имени должны относиться к одному и тому же полу).
  • Соответствие национальности (компоненты имени с высокой вероятностью относятся к одной и той же или близким национальностям).
  • Естественность порядка следования (порядок следования компонентов "фамилия-имя-отчество" является часто используемым, в то время как вероятность встретить вариант "имя-фамилия-отчество" очень мала).

Таким образом, если пользователь ввёл, например, грузинское мужское имя, далее ему будут предлагаться подсказки с грузинскими мужскими отчествами и фамилиями. При генерации подсказок учитывается, что слова, составляющие имя (как завершенные, так и вводимое в настоящий момент), могут содержать ошибки. При выполнении поиска осуществляется автоматическое исправление этих ошибок.

Для визуализации предлагаемых сервисом подсказок здесь используется популярный jQuery-плагин jQuery-Autocomplete, доступный по следующей ссылке: https://github.com/devbridge/jQuery-Autocomplete.

Для использования данного плагина с нашим сервисом следует использовать следующий инициализирующий JavaScript код.

//настраиваем плагин для работы с нашим сервисом
var options = { 
                serviceUrl:'http://ahunter.ru/site/suggest/person',
                params: { output: "json" },
                noCache: true,
                triggerSelectOnValidInput: false,
                paramName: "query",
                maxHeight: 500
              };

//запускаем плагин, 
//селектор '#js-Field' соответствует полю, где вводится ФИО персоны
$('#js-Field').autocomplete( options );

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

Простота предлагаемого нами API в части формирования подсказок позволяет разрабатывать собственные средства визуализации с использованием имеющихся под рукой технологий проектирования и разработки пользовательских интерфейсов.

Принцип использования подсказок при вводе ФИО одной строкой

Данная команда полагает, что имя персоны вводится пользователем в режиме реального времени. Каждый раз, когда пользователь вводит очередной символ целевого ФИО, увеличивается количество информации, на основе которой сервис может сформировать подсказки для слова, вводимого в настоящий момент.

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

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

Пример простого запроса подсказок

Приведенный ниже запрос отсылает сервису строку "Сидоров А", представляющую собой начало ФИО, введенное к настоящему моменту пользователем. На основании этой информации сервис должен сформировать подсказки для завершения слова, вводимого пользователем в настоящий момент (в данном случае введена лишь первая буква этого слова - "А").

http://ahunter.ru/site/suggest/person?output=json;query=%D0%A1%D0%B8%D0%B4%D0%BE%D1%80%D0%BE%D0%B2%20%D0%90

В данном запросе используются следующие параметры.

  • output=json - сообщает сервису о том, что необходимо вернуть ответ в формате JSON.
  • query=%D0%A1%D0 ... %20%D0%90 - закодированное с использованием URL-encoding введенное пользователем начало ФИО "Сидоров А" в кодировке UTF-8, для которого необходимо получить подсказки.

Рассмотрим более подробно все параметры, которые сервис может получать в рамках данной команды.

Параметры команды

Обязательные параметры для выполнения запроса.

  • http://ahunter.ru/site/suggest/person - URL-команды.
  • output=json или output=xml - формат, в котором требуется вернуть результат выполнения команды.
  • query=строка запроса - строка, содержащая введенное пользователем начало ФИО, для которого требуется получить подсказки.

Опциональные параметры.

  • output=pretty - опция, применимая только в случае использования JSON формата ответа сервиса. Данная опция требует, чтобы сервис выполнил "красивое" форматирование возвращаемого JSON-текста, расставив в нем переносы строк, отступы и пробельное прореживание. Опция может быть полезна при отладке взаимодействия пользовательского приложения с сервисом. Если этот параметр не задан, JSON-ответ будет возвращен в виде сплошной строки.
  • output=cp1251 - опция, применимая только в случае использования XML формата ответа сервиса. Данная опция требует, чтобы сервис вернул XML-ответ в кодировке windows-1251. Если этот параметр не задан, данные возвращаются в кодировке UTF-8.
  • input=utf8 или input=cp1251 - кодировка UTF-8 или windows-1251, в которой представлены входные данные в параметре query. Если этот параметр не задан, полагается, что данные получены в кодировке UTF-8.
  • personlim=число - ограничение на число возвращаемых подсказок. Если данное значение превышает установленный администратором сервиса порог, равный 20 подсказкам, то данное значение будет принудительно уменьшено до этого допустимого порога. Если в запросе данный параметр не указан, то в качестве лимита будет выступать установленное администратором сервиса умолчальное значение, равное 10 подсказкам.

Пример запроса подсказок с дополнительными опциями

Приведенный ниже запрос отсылает сервису на обработку введенное пользователем начало ФИО "Ломоносов М" с дополнительными параметрами.

http://ahunter.ru/site/suggest/person?input=utf8;output=json|pretty;query=%D0%9B%D0%BE%D0%BC%D0%BE%D0%BD%D0%BE%D1%81%D0%BE%D0%B2%20%D0%9C;personlim=3

В данном запросе используются следующие параметры.

  • input=utf8 - сообщает сервису о том, что обрабатываемая строка представлена в кодировке UTF-8.
  • output=json|pretty - сообщает сервису о том, что необходимо вернуть ответ в формате JSON, отформатировав его "красиво".
  • query=%D0%9B%D0 ... %20%D0%9C - закодированное с использованием URL-encoding введенное пользователем начало ФИО "Ломоносов М" в кодировке UTF-8, для которого необходимо получить подсказки.
  • personlim=3 - сообщает сервису, что следует вернуть только три наиболее подходящие подсказки для вводимого ФИО.

Результат запроса: подсказки ФИО в формате JSON

Ниже приведен ответ сервиса с результатом формирования подсказок по введенному пользователем началу ФИО "Иван Т". Полагается, что пользователь вводит ФИО некой персоны, имеющей имя "Иван", и сейчас начинает вводить фамилию или отчество этой персоны, начинающееся с буквы "Т".

Результирующий JSON-ответ получен с использованием опции output=json|pretty, позволяющей выполнить "красивое" форматирование JSON-текста.

{
  "query" : "Иван Т",
  "request_process_time" : 17,
  "suggestions" : [
    {
      "value" : "Иван Тимофеевич"
    },
    {
      "value" : "Иван Тихонович"
    },
    {
      "value" : "Иван Трофимович"
    },
    {
      "value" : "Иван Тарасов"
    },
    {
      "value" : "Иван Толстой"
    },
    {
      "value" : "Иван Титов"
    },
    {
      "value" : "Иван Терентьевич"
    },
    {
      "value" : "Иван Тимофеев"
    },
    {
      "value" : "Иван Тихонов"
    },
    {
      "value" : "Иван Тихомиров"
    }
  ]
}

Результатом формирования подсказок для вводимого ФИО является JSON-объект со следующими элементами.

  • suggestions - массив с вариантами подсказок для обработанного ФИО.
  • query - строка, содержащая исходный обработанный запрос.
  • request_process_time - время обработки всего запроса в целом в миллисекундах.

Ниже приведено детальное описание этих элементов.

JSON-массив suggestions

Поскольку при формировании подсказок полагается, что ФИО введено не полностью, вариантов завершения написания слова, вводимого пользователем в настоящий момент, в общем случае может быть несколько. Каждый из вариантов завершения вводимого слова является подсказкой для пользователя, которую тот может выбрать в качестве целевого слова. Каждому предлагаемому сервисом варианту соответствует отдельный элемент JSON-массива suggestions. Количество предлагаемых вариантов может лимитироваться с помощью опционального параметра personlim, передаваемого в рамках запроса.

Пример JSON-объекта, соответствующего одному варианту подсказок для вводимого ФИО, приведен ниже.

{
  "value" : "Иван Тимофеевич"
}

Каждый элемент массива suggestions представляет собой JSON-объект со следующими элементами.

  • value - строка с ФИО, содержащая один из вариантов завершения слова, вводимого пользователем в настоящий момент. Компоненты ФИО, предлагаемые сервисом в этой строке, приведены в стандартизованном виде с исправленными ошибками.

Поскольку формирование подсказок происходит в режиме реального времени, никакой дополнительной информации по каждой подсказке сервис не возвращает. Это обусловлено необходимостью минимизировать сетевой трафик и время отклика сервиса. Чтобы получить исчерпывающую информацию по итоговому ФИО, которое ввел или выбрал из предложенных подсказок пользователь, приложению пользователя следует использовать команду стандартизации ФИО: cleanse/person.

Результат запроса: подсказки в формате XML

Здесь и далее приводится описание ответа сервиса в случае использования формата XML. По существу, возвращаемые в XML-ответе элементы имеют аналогичное назначение JSON-элементам, описанным выше. Для получения ответа в формате XML необходимо в исходном запросе использовать значение параметра output=xml.

XML-ответ сервиса в результате формирования подсказок по введенному пользователем началу ФИО "Иван Т" имеет следующий вид.

<ProcessSuggestResult>
  <Query val="Иван Т"/>
  <Suggestion val="Иван Тимофеевич"/>
  <Suggestion val="Иван Тихонович"/>
  <Suggestion val="Иван Трофимович"/>
  <Suggestion val="Иван Тарасов"/>
  <Suggestion val="Иван Толстой"/>
  <Suggestion val="Иван Титов"/>
  <Suggestion val="Иван Терентьевич"/>
  <Suggestion val="Иван Тимофеев"/>
  <Suggestion val="Иван Тихонов"/>
  <Suggestion val="Иван Тихомиров"/>
</ProcessSuggestResult>

Результатом формирования подсказок для вводимого ФИО является XML-документ со следующими дочерними элементами.

  • Query - данный XML-элемент содержит обработанную строку запроса. Эта строка передается с помощью атрибута val этого XML-элемента. Данный элемент является полным аналогом JSON-элемента query, возвращаемого в JSON-ответе сервиса.
  • Suggestion - данный XML-элемент соответствует одному из предложенных сервисом вариантов завершения написания слова, вводимого пользователем в настоящий момент. Поскольку при формировании подсказок полагается, что ФИО введено не полностью, таких вариантов может быть несколько. В связи с этим в XML-ответе может присутствовать несколько элементов Suggestion. Список из всех XML-элементов Suggestion является аналогом JSON-массива suggestions, возвращаемого в JSON-ответе сервиса.

Ниже приведено детальное описание этих XML-элементов.

XML-элемент Suggestion

Элемент Suggestion содержит информацию об одной подсказке из предложенного сервисом списка подсказок по вводимому ФИО. Пример данного элемента приведен ниже.

<Suggestion val="Иван Тимофеевич"/>

Данный элемент содержит следующие атрибуты.

  • val - строка с ФИО, содержащая один из вариантов завершения слова, вводимого пользователем в настоящий момент. Компоненты ФИО, предлагаемые сервисом в этой строке, приведены в стандартизованном виде с исправленными ошибками.
версия сервиса:
© ixLab, 2007-2017, e-mail: info@ixlab.ru
обработано за 0 (мс)