Skip to content

Latest commit

 

History

History
30 lines (21 loc) · 4.68 KB

HW5.md

File metadata and controls

30 lines (21 loc) · 4.68 KB

Поисковая система для корпуса

В этом задании вам нужно будет написать свой "Яндекс", который будет искать информацию в ранее собранном вами корпусе газеты из третьго ДЗ.

Для этого вам потребуется:

  1. Придумать структуру базы данных и добавить в нее названия статей, их тексты, очищенные от тегов и прочего мусора (те, что лежат у вас в папке plain в третьем ДЗ), лемматизированные тексты (те, что лежат в папке mystem-plain) и ссылки на эти статьи на сайте вашей газеты. По желанию можно добавить в базу и другие метаданные: дату, автора и т.д.
  2. Создать веб-сервис, в котором можно будет вбить произвольную фразу и получить ссылки на материалы, где она встречается, и кусочек страницы с ней. Т.е. на странице результатов поиска должен выводиться список всех статей, в тексте которых нашлось заданное слово / фраза. Каждый элемент списка -- это ссылка на эту статью на сайте и кусочек текста статьи (того, что лежит в вашей базе данных), содержащий запрос. Размер выводимого кусочка статьи -- на ваше усмотрение, рекомендуемая длина -- 250-500 символов.
  3. На запрос по любой форме слова должны выводиться статьи, где это слово встречается в любой форме, а не только в этой. Например, вы вводите "котик" и получаете статьи со словами "котикам", "котика", "котику" и т.д. Ровно такая же выдача должна получиться и по запросу "котиков", "котиками" и т.д.

Результаты поиска желательно выводить на главной странице. Если для них создана отдельная страница, то поле для ввода поискового запроса должно быть и там.

В качестве СУБД рекомендуем использовать SQLite.

Критерии

Балл Критерий
1 Программа запускается и оформлена по PEP8. Соответствие PEP8 можно проверить с помощью команды pycodestyle my_script_name.py в командной строке.
1 Создана структура базы данных, удовлетворяющая требованиям задачи.
2 Выполнен перенос всех необходимых данных в БД (названия статей, ссылки, обычные и лемматизированные тексты).
1 Создано фласк-приложение с формой поиска на главной странице
2 При отправке запроса через форму поиска выдаются ссылки на статьи из базы данных (хотя бы какие-то - 1 балл, все нужные данные из базы со словом из запроса в любых формах - 2 балла).
2 Помимо ссылок и названий статей на странице отображается кусок страницы, в котором был найден текст запроса (как в Яндексе, лемматизированное описание - 1 балл, исходный текст - 2 балла).
1 Постраничное отображение результатов поиска (как в Яндексе).
1 Бонусный балл за оформление сайта с помощью bootstrap

NB! Это задание, как и предыдущее, лучше сдавать в виде обычного .py скрипта (а не тетрадки).

NB! Если Вы не сделали задание 3, то создайте базу данных с нуля.