Skip to content

topak27/BabyGoogle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BabyGoogle

###Задача: сделать простенький “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. Добавить возможность указания предельной глубины рекурсии при индексировании на странице 1.

  2. Сделать догрузку больше 10 результатов на выбор:

  • добавить кнопку “View More…”, которая будет догружать аджаксом еще десять результатов (а потом еще 10 и т.д.)
  • как у гугла - постраничное листание
  1. На странице 4 сделать возможность выбора сортировки (в стиле ссылки -переключателя): стандартная - по релевантности и по алфавиту. При выборе сортировки - страница автоматически обновляется.
  2. Сделать стиль страницы максимально похожими на Гугл (элементы, которых нет в оригинале, должны вписываться органично в дизайн).
  3. Для каждой записи на странице 4 показывать фрагмент “плоского” текста, по которому был найден документ. Само слово, фразу нужно подсветить следующим образом:

![example] (https://lh5.googleusercontent.com/S4sYj2GNjwd1kHPIc1pH3hF_15pMK3KN6aEy8xKaa24I6KsjsxE2XY5bIWEYGWilpFrNFxZJrJ10Y8seIKf6N08yZm8l_fjJmBqD0QSE3TxvBrzujXRJ8_VNARI1HrqfyKd5q2g)

About

the simplest clone of Google

Resources

Stars

Watchers

Forks

Packages

No packages published