Предлагаю всем желающим свой алгоритм (и Demo-приложение, его реализующее)
для построения "autocompletion lists" в GUI-полях.
Сейчас многие GUI control-ы имеют функцию autocompletion (autosuggestion). Но, как правило, в них применяется самая простая логика: фильтры типа Equals или Contains; и всё. И конечно, нет никакого "упорядочивания элементов autocompletion-списка по убыванию их релевантности введённому тексту".
В своей более ранней (
статье) я предложил "более умный" алгоритм, вычисляющий "степень схожести" между введённым в поле текстом и элементом autocompletion-списка; после чего упорядочивает элементы autocompletion-списка по убыванию этой "степени схожести".
В новой
статье я добавляю к предыдущему алгоритму ещё и учёт "популярности запросов". Эта "популярность" становится (наряду с упомянутой "степенью схожести") ещё одним фактором, на основании которых вычисляется степень релевантности элементов autocompletion-списка введённому тексту.
Я позиционирую свой алгоритм как нечто подходящее для использования в GUI-приложении по примерно такому сценарию:
— Для некоего поля (типичный кандидат – поля Search-форм) запомним, скажем, 500 последних введённых туда значений;
— Когда пользователь начинает набирать нечто в поле – применяем мой алгоритм, получаем autocompletion-список
— Если список вышел слишком большим для отображения ВСЕГО его в GUI (скажем, больше 30-и значений) – оставляем только первые N элементов;
— Отображаем этот список под полем
Вся статья —
здесь