Поисковая система Университета Сунь Ятсена
Yat-Search Engine — это эффективная система текстового поиска, которая поддерживает загрузку нескольких файлов, точный запрос, нечеткий запрос и запрос регулярного выражения. Целью этого проекта является предоставление быстрого и точного решения для текстового поиска с функциями постоянного хранения и регистрации, а также поддержкой китайского интерфейса.
Следует отметить, что поиск на китайском языке можно выполнить только с помощью опции «Нечеткий поиск», и в конце должен быть символ «.
Этот проект предназначен только для образовательных и коммуникационных целей, пожалуйста, не используйте его в коммерческих целях. Оригинальный автор не несет ответственности за любые последствия, возникшие в результате использования данного проекта.
Текущая версия все еще находится в разработке, и некоторые функции могут быть реализованы не полностью. Вклады кода и предложения приветствуются!
Основное задание по курсу «Структуры данных и алгоритмы» Школы компьютерных наук Университета Сунь Ятсена в осеннем семестре 2024 года.
Текущая версия: v1.4.0
└──Yat-Search-Engine
├── CMakeLists.txt
├── LICENSE
├── dat
│ └── index.dat
├── include
│ ├── RegexSearch.h
│ └── TextSearchEngine.h
├── log
│ └── query_log.txt
├── logo_pic
│ ├── logo.txt
│ └── logo_out.txt
├── readme.md
├── source-text
│ ├── bible.txt
│ ├── text1.txt
│ ├── text2.txt
│ └── otherfile...
└── src
├── RegexSearch.cpp
├── TextSearchEngine.cpp
└── main.cpp
Хэш-таблица содержит запрос версии 1.0.0.
CustomHash
и используйте unordered_map
в TextSearchEngine
чтобы объединить хеш-функцию для оптимизации производительности запросов.Чтение файлов v1.0.1
Поддержка нескольких файлов (завершено) v1.1.0
main.cpp
, чтобы пользователи могли вводить несколько имен файлов, и система будет загружать эти файлы один за другим для индексации.Поддержка регулярных выражений (завершено) v1.1.1
RegexSearch
, используйте библиотеку C++ <regex>
для реализации функции запроса на основе регулярных выражений и добавьте соответствующие параметры в главное меню.Точный запрос (завершен) v1.1.2
exactQuery
, эффективно находите ключевые слова с точным соответствием с помощью unordered_map
и отображайте результаты соответствия.Визуализация результатов поиска, например, имитация того, как компилятор сообщает об ошибках (завершено) v1.2.0
^
, чтобы отметить положение ключевого слова в предложении, аналогично индикации ошибки компилятора, чтобы улучшить читаемость.Неограниченный запрос, кнопка выхода (завершено) v1.2.1
Новая хеш-функция (завершена) v1.3.1
CustomHash
и повысьте эффективность обработки конфликтов хэшей для дальнейшего повышения производительности запросов.Поддержка китайского языка (завершено) v1.4.0
Оптимизация производительности и предварительная обработка (завершена) v1.3.1
Пользовательский интерфейс (завершен) v1.2.2
Постоянное хранилище (завершено) v1.3.0
Функция журнала, запись истории запросов и т. д. (Завершено) v1.3.2
query_log.txt
чтобы пользователи могли просматривать записи истории и выполнять отладку.Поддержка китайского вывода (завершено) v1.4.0
Метод компиляции изменен с mingW на cmake (завершено) v1.4.0.
Введите все, чтобы добавить все файлы (завершено) v1.4.0
Обязательно запустите его в среде Linux. В среде Windows могут появиться искаженные китайские символы. Введите рабочий каталог и клонируйте проект локально:
git clone https://github.com/ouyangyipeng/Yat-Search-Engine.git
cd Yat-Search-Engine
Убедитесь, что у вас установлен CMake и компилятор с поддержкой C++17, например g++
или clang++
. В файле cmakelists.txt уже настроены параметры компиляции. Просто выполните следующую команду, чтобы скомпилировать проект. Обратите внимание, что компилятор по умолчанию находится в /usr/bin/g++
. Если вам нужно использовать другие компиляторы, измените файл CMakeLists.txt.
mkdir build # 假如没有build文件夹
cd build
cmake ..
cmake --build .
./YatSearchEngine
Поместите текстовый файл, который вы хотите найти, в папку исходного текста и убедитесь, что файл сохранен в формате .txt.
Запустите программу: после запуска исполняемого файла программа отобразит интерфейс приветствия и предложит нажать Enter для продолжения.
Загрузить файл: введите файл для загрузки в соответствии с подсказками, каждый раз вводите имя файла (должно заканчиваться на .txt), введите «готово», чтобы завершить выбор файла.
Выберите тип запроса:
Введите 1 для точного запроса.
Введите 2 для нечеткого запроса.
Введите 3 для запроса регулярного выражения.
Введите 4, чтобы выйти из программы.
Введите содержимое запроса. В соответствии с выбранным типом запроса введите соответствующие ключевые слова или регулярные выражения.
Просмотр результатов. В результатах запроса будут отображены соответствующие предложения и маркеры их местоположения.
Выход из программы: выберите вариант выхода, программа сохранит индекс и запишет журнал перед выходом.
Журнал операций запроса сохраняется в файле query_log.txt. Пользователи могут просматривать исторические записи запросов и журналы операций с помощью текстового редактора.
Вклады кода и предложения приветствуются! Отправьте запрос на включение или оставьте свой отзыв в разделе «Вопросы».
Этот проект лицензируется по лицензии MIT. Подробности смотрите в файле ЛИЦЕНЗИИ.