В вычислительной технике инкрементальный поиск , также известный как горячий поиск , инкрементальный поиск или предложения в реальном времени , представляет собой метод взаимодействия с пользовательским интерфейсом для постепенного поиска и фильтрации текста. По мере того, как пользователь вводит текст, находится одно или несколько возможных совпадений для текста, которые немедленно предоставляются пользователю. Эта немедленная обратная связь часто позволяет пользователю остановиться, не набирая все слово или фразу, которые он искал. Пользователь также может выбрать тесно связанный вариант из представленного списка.
Метод инкрементального поиска иногда отличается от пользовательских интерфейсов, которые используют модальное окно , например диалоговое окно , для ввода поисковых запросов. Для некоторых приложений вместо диалогового окна может использоваться отдельный режим пользовательского интерфейса .
Первое задокументированное использование инкрементного поиска было в EMACS на ITS в конце 1970-х годов. [1] Это была одна из многих важных функций Emacs, которую Ричард Столлман включил в свою повторную реализацию GNU Emacs . Другие заслуживающие внимания программы, содержащие эту функциональность в 1980-х годах, включают bash и Canon Cat . [2] Эти ранние реализации предлагали однострочную обратную связь, а не списки предложений.
Первое массовое появление, возможно, было в Speller для WordPerfect 5.2 для Windows, выпущенном 30 ноября 1992 года. [3] Когда программист Роберт Джон Стивенс, ныне генеральный директор WriteExpress, наблюдал, как пользователи в WordPerfect Usability Lab в Ореме, штат Юта, используют Speller 5.1, который он и Стивен М. Кэннон перенесли на Windows, он заметил, что когда слово не было найдено в словаре и не было представлено альтернативных слов, пользователи терялись, перемещали курсор мыши по странице и даже выходили из Speller. Ошеломленный аномалией, он пошел домой, сел на диван и обсудил свои наблюдения с женой. Стивенс закодировал решение: когда пользователь печатал в поле редактирования, Speller предлагал слова, начинающиеся с введенных букв. «Вы можете ввести в поле Replace With любое слово, которое хотите найти. По мере того, как вы вводите буквы в поле, отображаются возможные совпадения». [4] [5]
Эту функцию или ее вариации также называют автозаполнением , поиском по мере ввода , фильтром/поиском по мере ввода (FAYT), инкрементным поиском , поиском с опережением ввода , встроенным поиском , мгновенным поиском , циклическим поиском по словам и другими названиями.
Некоторые распространенные сочетания клавиш для инкрементального поиска — Ctrl/Cmd-F (как и для традиционного поиска), F3, стиль GNU/ (также применимый к Vim [6] ) или стиль EmacsC-s .
Этот метод пользовательского интерфейса также используется в различных контекстах. Например, пользователь может столкнуться с этой функцией при поиске файлов, имена которых соответствуют строке в оболочке проводника операционной системы. Функция также может использоваться при поиске песен, имя или исполнитель которых соответствуют строке в медиаплеере.
Другой вариант — фильтрация длинных списков опций или пунктов меню, которые могут отображаться в самом пользовательском интерфейсе. Примеры этого варианта можно найти в разделе интерфейса about:config Mozilla Firefox версии 2.0.0.14 и более поздних версий; и в разделе редактора пакетов TextMate 1.5.7. Эта функция также используется в программах запуска приложений, таких как Quicksilver 1.0.
Обычно список совпадений формируется по мере ввода поискового запроса и постепенно сужается для соответствия тексту фильтра.
В сентябре 2010 года Google представил Google Instant — функцию постепенного поиска для Google Search.
Инкрементный поиск на нелокальном сервере, как и при веб-поиске, использует большую пропускную способность сети и серверную обработку, чем неинкрементный поиск, из-за обработки XMLHttpRequests (или аналогичных), которые обычно запускаются при каждом событии onkeyup .
Эксперт по интерфейсам Джеф Раскин был ярым сторонником инкрементального поиска. В своей книге 2000 года «The Humane Interface » он писал: «С точки зрения проектирования интерфейсов преимущества инкрементального поиска столь многочисленны, а преимущества поиска с разделителями столь малы, что я не вижу практически ни одного случая, когда поиск с разделителями был бы предпочтительнее». Далее следовала сноска: «Поиск является либо инкрементальным, либо экскрементальным». [7]
Инкрементный поиск подвергался критике за низкую доступность [8], поскольку текстовые поля, которые его обеспечивают, не предоставляют визуального указания на этот факт до тех пор, пока пользователь не начнет печатать.
Немодальный инкрементный поиск найден в:
Современные веб-браузеры :
Клиенты мгновенного обмена сообщениями :
Современные операционные системы :
Редакторы и среды разработки:
Другие приложения: