Выполнил Глушков Егор, 1 курс магистратуры по направлению МОАИС, Матмех, СПбГУ
Формулировка задания №1 в файле task.md
Из корневой директории запускать:
- построение индекса (внутри настраивается размер блока и путь до файла-индекса)
python build_index.py
- запросы
python main.py
- Булевый запрос может содержать такие операторы, как *OR, or, |, AND, and, &, NOT, not, ~*
- Для искомых слов регистр букв не имеет значения
- Алгоритм не работает со скобками
- Примеры запроса (без кавычек): "health OR aid AND not care", "~Moscow | Berlin & Rome"
- Для вывода всех docID как результатов по искомому запросу следует раскомментировать строку 83 в query_processing.py
- В query_processing.py также представлены функции, отдельно осуществляющие множественный поиск отдельно с объединением и пересечением; поиск по одному слову / с отрицанием
- Датасет (новости от агентства Рейтерс) лежит в папке data, разделен на файлы, состоящие из набора новостей (документов в терминах данной программы)
- Непосредственное построение индекса осуществляется в inverted_index.py в соответствии с алгоритмом SPIMI
- Любое чтение и запись производится побитово / построчечно без выгрузки в оперативную память ввиду особенностей применения алгоритма
- Обработка слов ведется в файле text_processing.py
- make_dataset.py и index/all_articles.txt могут помочь в проверке (поиске) статей-документов по их ID
- index/index.out -- заранее построенный файл-индекс, с использованием которого и ведется поиск; удобен для проверки