###Задача: сделать простенький “Google”-клон на основе полнотекстового поиска Lucene.
Требования: Предельно простое веб приложение со следующим набором страниц:
Страница 1: /index
| (метод GET)
Содержит форму состоящую из текстового поля и кнопки “Index”. При нажатии на кнопку сабмитится форма с переходом на страницу 2.
Страница 2: /index?q={valid uri}
(метод POST)
Запускает индексирование веб страницы по заданному адресу (смотри ниже)
Страница 3: /
(корневая) | (метод GET)
Содержит текстовое поле и кнопку “Search”. При нажатии на кнопку мы переходим на страницу поиска (4), помещая содержимое текстового поля в параметр q
Страница 4: /search?q={query}
| (метод GET или POST)
Показывает 10 записей (ссылок на веб-страницы), которые содержат искомое слово или фразу. Формат записи очень простой:
<b>{document title}</b>
{document uri}
пример:
UKR.NET: Всі новини України, останні новини дня в Україні та Світі
http://www.ukr.net
Между записями - одна строка пропуска.
При щелчке на любой символ записи - переход на оригинальную страницу. Сортировка результатов должна быть по релевантности.
Индексирование:
Для того что бы проиндексировать веб страницу, ее рекомендуется превратить в “плоский” текст, т.е. выбросить все HTML теги и индексировать то, что между ними. Нельзя допустить, что бы запрос div
возвращал все страницы.
Следующий этап - это найти ссылки на другие страницы и запустить индексирование для каждой из них. Получается такой себе рекурсивный процесс. Но его желательно ограничить - не больше 3 ссылок в глубину. Также не должно быть повторной индексации в рамках одной сессии индексирования.
Относительные переходы тоже должны индексироваться, но редиректы отслеживать не обязательно.
Дополнительные задачи (по желанию):
-
Добавить возможность указания предельной глубины рекурсии при индексировании на странице
1
. -
Сделать догрузку больше 10 результатов на выбор:
- добавить кнопку “View More…”, которая будет догружать аджаксом еще десять результатов (а потом еще 10 и т.д.)
- как у гугла - постраничное листание
- На странице
4
сделать возможность выбора сортировки (в стиле ссылки -переключателя): стандартная - по релевантности и по алфавиту. При выборе сортировки - страница автоматически обновляется. - Сделать стиль страницы максимально похожими на Гугл (элементы, которых нет в оригинале, должны вписываться органично в дизайн).
- Для каждой записи на странице
4
показывать фрагмент “плоского” текста, по которому был найден документ. Само слово, фразу нужно подсветить следующим образом: