RuPoisk - это модульная поисковая система с открытым исходным кодом, разработанная для индексации и поиска по текстовому содержимому сайтов на русском языке. Проект состоит из веб-сайта (Django) и программы для индексации и поиска (Electron.js), обеспечивая удобный и интуитивно понятный интерфейс.
RuPoisk стремится предоставить гибкую и расширяемую платформу для создания собственных поисковых решений. Модульная архитектура позволяет разработчикам легко адаптировать и дорабатывать компоненты системы под конкретные нужды.
- Индексация сайтов на русском языке: Автоматическое индексирование текстового содержимого страниц веб-сайта по заданному URL.
- Рекурсивный обход ссылок: Обход и индексация всех страниц, на которые есть ссылки на проиндексированной странице, позволяя охватить весь сайт.
- Учет robots.txt: Поддержка стандартного файла
robots.txt
для исключения определенных страниц из индексации. - Семантический поиск: Поиск с учетом однокоренных слов и синонимов для повышения релевантности результатов.
- Автоисправление ошибок: Автоматическое исправление опечаток и ошибок в поисковых запросах (на основе pymorphy3).
- Авторский метод ранжирования: Оригинальный алгоритм ранжирования страниц, который учитывает релевантность информации и позволяет более полезным страницам со временем подниматься в поисковой выдаче.
- Модульная архитектура: Разделение системы на независимые модули (например, индексатор, поисковый движок, интерфейс), что упрощает доработку и расширение функциональности. Реализованы методы поиска по точному совпадению слов и BM25.
- Веб-сайт и программа: Сочетание веб-сайта (Django) для отображения результатов поиска и отдельной программы (Electron.js) для индексации и управления.
- Открытый исходный код: Публикация на GitHub (или аналогичном сервисе) для возможности доработки и внесения вклада сообществом.
- Подробная документация: Инструкции по установке, настройке и развертыванию системы на собственном оборудовании.
- Python: Основной язык программирования для движка индексации и поиска.
- Django: Фреймворк для создания веб-сайта и API.
- Electron.js: Фреймворк для создания кроссплатформенных десктопных приложений (интерфейс для индексации и управления).
- aiohttp: Асинхронная библиотека для HTTP-запросов.
- BeautifulSoup: Библиотека для парсинга HTML.
- re: Модуль для работы с регулярными выражениями.
- pymorphy3: Библиотека для морфологического анализа русского языка и исправления опечаток.
- sentence-transformers: для работы с семантичеким поиском.
- Клонируйте репозиторий:
-
git clone <ссылка на репозиторий> cd RuPoisk
- Установите зависимости:
-
pip install -r requirements.txt
- Настройте Django:
-
python manage.py migrate
- Запустите Django development server:
-
python manage.py runserver 8080
- Запустите Electron приложение:
-
start electronApp/ru.poisk.exe
python run.py
Система состоит из следующих основных модулей:
- Индексатор: Модуль, отвечающий за обход сайтов, сбор текстового содержимого и создание индекса. (поиск xml файла или перебор всех страниц сайта)
- Поисковый движок: Модуль, осуществляющий поиск по индексу и ранжирование результатов. Реализованы методы поиска по семантике, точному совпадению слов и BM25.
- Веб-сайт (Django): Предоставляет API для поиска и отображает результаты поиска в удобном виде.
- Приложение (Electron.js): Предоставляет интерфейс для управления индексацией, просмотра статистики и настройки системы.
RuPoisk разработан в модульном стиле, чтобы облегчить доработку и расширение системы. Разработчики могут легко добавлять новые функции, изменять существующие модули или разрабатывать собственные модули.
Мы приветствуем вклад сообщества! Вы можете:
- Сообщать об ошибках.
- Предлагать улучшения.
- Отправлять pull requests.
- Участвовать в обсуждениях.
RuPoisk распространяется под лицензией MIT License.