Правильное и неправильное автодополнение

Размышлял об автодополнении. Это когда вводишь в тестовое поле буковки, а умный сервис предлагает тебе варианты, которые этим буковкам соответствуют.

Мне такая штука будет нужна в одном проЭкте, поэтому я пошёл искать готовые решения. Нашёл вот такую реализацию автодополнения на jQuery. Выглядит красиво, но работает немного странно. Если например набрать буковку m, то выдаст все варианты, в которых встречается эта буковка. Вот картинка:

Неправильно работающее автодополнение

Логично? Нифига не логично. Кому в голову придёт вводить слово Jimmy, начиная с буквы m? У людей есть интересная особенность - они пишут слова с начала, а не с середины.

Это был пример неправильного автодополнения.

В моём представлении правильное автодополнение должно работать так: сначала выводятся те варианты, в которых хотя бы одно из слов начинается с заданных букв. Если таких нет, то выводятся варианты просто содержащие заданные буквы (хотя мне это кажется излишним).

Как выяснилось, именно так делает Google Reader при добавлении тэгов. Ввожу w - получаю Web Design. Ввожу d - получаю опять Web Design. Если ввожу eb (sic!) - снова получаю Web Design. Радостно!

А вот если у меня будет тэг, начинающийся с eb, то Web Design выскакивать уже не будет (проверено).

Кстати, в Google Reader заметил интересную особенность. Рассказывать не буду, просто покажу картинки, а вы ищите сами.

Автодополнение в Google Reader #1

Автодополнение в Google Reader #2

Автодополнение в Google Reader #3