Лабораторная
  • формат archive, flash, html, image, java, pdf, txt
  • размер 21,66 МБ
  • добавлен 23 мая 2011 г.
Поисковая система для oriteam по сайтам Imagine Cup
Поисковый робот: Apache Droids (Java). Индексатор и ранжирование: Python. База данных: Redis. Веб-интерфейc: Django (Python).
МАИ. Факультет прикладной математики. Кафедра вычислительной математики и программирования. Информационный поиск. Преподаватель: А. Л. Калинин. Студенты: Ю. М. Сергукова, А. Л. Маркин, А. В. Брагин, Т. В. Грудинина, И. К. Никитин. 2011 год.
Данные лабораторные работы являются частью прототипа поисковой системы. Поэтому общая задача – задача, объединяющая цикл лабораторных работ команды студентов, конкретная же часть работы каждого из них раскрывается в более конкретизированной постановке задачи и описании ее выполнения.
Итак, общей задачей было создать прототип поисковой системы, которая должна соответствовать нескольким требованиям:
пользователь работает с web-интерфейсом в стиле «запрос-ответ»: вводит поисковый запрос, а получает набор документов, которые по этому запросу нашла система.
запросы передаются специальному модулю, который выделяет из них атомарные элементы и на основе данных по каждому элементу запроса, взятых из базы данных индексов, определяет, какой из найденных документов более релевантен запросу, а какой менее. Результаты возвращаются в виде списка документов пользователю.
база данных содержит обратный индекс, полученный в результате индексации страниц реально существующих сайтов.
Конвейерная схема работы поисковой системы
Перед нами стоял выбор: сделать систему, способную обновлять свои индексы в процессе работы, либо же систему более статичную, индексы в базе которой неизменны во время одного сеанса.
В первом случае паук должен поставлять свежие снимки со страниц и либо сам определять свежесть этих снимков относительно уже существующих, либо перекладывать эту задачу на индексатор, который, в свою очередь, будет обновлять индексы в базе данных в соответствии с обновившейся информацией по страницам. Однако, эта схема подразумевает работу всех модулей параллельно.
Несмотря на логичность и естественность параллельной схемы работы поисковой системы, нам пришлось отказаться от нее по нескольким причинам, среди которых были и ограниченность ресурсов памяти машины (иначе нам пришлось бы пожертвовать объемом обрабатываемых данных, чего нам делать не хотелось), и лишнее усложнение модулей системы (что, в свою очередь, привело бы к излишней «накрутке» функционала).
Поэтому мы реализовали более простую, конвейерную, систему работы поисковой системы. Каждый этап из предоставленной выше цепочки выполняется независимо от остальных, каждый последующий использует уже готовые результаты работы предыдущего. Исключение составляет лишь связка модуля ранжирования с пользовательским интерфейсом, которые взаимодействуют друг с другом.
Особенности
Поддерживается простой язык запросов (операции звездочка нечеткий поиск, логическое "+").
Есть проверка опечаток (фонетический поиск).
Кроме того, используются сниппеты и сохраненная копия документа.
Похожие разделы