2013-05-18; test2

1. Фильтр по введённым словам

Задача. На странице имеется поле ввода (поиска) и список. По мере ввода слов в поисковое поле необходимо скрывать элементы списка, в которых не найдены введенные слова. Если не найдено ничего, то скрывать весь список и выводить надпись "Ничего не найдено".
Обоснование. Эта задача привлекательна тем, что для демонстрации надо написать генерацию тестовых данных.

Фильтрация текстов по введённым словам

(все слова состоят из русских или латинских букв)
Видимых записей:
Делаем для начала 10 тыс. русских записей и 1 тыс. латинских.

Трактовать условие скрывания в задаче можно двояко: то ли не найдено ни одно из введённых слов (условие "ИЛИ"), то ли запись не содержит ни одного введённого слова (условие "И"). Принимаем первую ("ИЛИ") трактовку как истинную, поскольку при ней результаты получаются интереснее (не пропадают при вводе несуществующего слова).

Другая неоднозначная трактовка в задаче вызывает слово "список". Список чего - не уточнено. Список текстов или список слов? В решении предположили, что подразумевался список фраз - групп слов.

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

Как другой бонус - подсветка, пришедшая из задачи 2. Она добавляет необходимость удаления тегов перед сравнением и работает медленнее, но посмотреть на неё стОит. Глаза получают ориентиры; второе число после числа строк - сумма найденных совпадений. При снятии чекбокса - тоже ощутимая задержка на удаление подсветок.

Проверено на процессоре e7200 в браузерах:
Chrome 25 - 1.5-2 секунды на расчёт;
Firefox 20 - 3-4 секунды;
Opera 12 - 9-14 секунд;
IE8 - 5-16 секунд.
Эти данные говорят о быстродействии регекспов и отрисовке больших списков в браузерах.

Перейти ко 2-му тесту.