В этом задании вам нужно будет написать свой "Яндекс", который будет искать информацию в ранее собранном вами корпусе газеты из третьго ДЗ.
Для этого вам потребуется:
- Придумать структуру базы данных и добавить в нее названия статей, их тексты, очищенные от тегов и прочего мусора (те, что лежат у вас в папке
plain
в третьем ДЗ), лемматизированные тексты (те, что лежат в папкеmystem-plain
) и ссылки на эти статьи на сайте вашей газеты. По желанию можно добавить в базу и другие метаданные: дату, автора и т.д. - Создать веб-сервис, в котором можно будет вбить произвольную фразу и получить ссылки на материалы, где она встречается, и кусочек страницы с ней. Т.е. на странице результатов поиска должен выводиться список всех статей, в тексте которых нашлось заданное слово / фраза. Каждый элемент списка -- это ссылка на эту статью на сайте и кусочек текста статьи (того, что лежит в вашей базе данных), содержащий запрос. Размер выводимого кусочка статьи -- на ваше усмотрение, рекомендуемая длина -- 250-500 символов.
- На запрос по любой форме слова должны выводиться статьи, где это слово встречается в любой форме, а не только в этой. Например, вы вводите "котик" и получаете статьи со словами "котикам", "котика", "котику" и т.д. Ровно такая же выдача должна получиться и по запросу "котиков", "котиками" и т.д.
Результаты поиска желательно выводить на главной странице. Если для них создана отдельная страница, то поле для ввода поискового запроса должно быть и там.
В качестве СУБД рекомендуем использовать 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, то создайте базу данных с нуля.