Skip to content

modular, open-source search engine built with Python, Django, and Electron.js for indexing and searching Russian-language websites, offering a flexible and extensible platform for customized search solutions.

Notifications You must be signed in to change notification settings

TchTech/RuPoisk

Repository files navigation

🔍 RuPoisk: Поисковая система с открытым исходным кодом на русском языке

✨ Описание

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: для работы с семантичеким поиском.

⚙️ Начало работы

  1. Клонируйте репозиторий:
  • git clone <ссылка на репозиторий>
    cd RuPoisk
  1. Установите зависимости:
  • pip install -r requirements.txt
  1. Настройте Django:
  • python manage.py migrate
  1. Запустите Django development server:
  • python manage.py runserver 8080
  1. Запустите Electron приложение:
  • start electronApp/ru.poisk.exe

Или просто запустите:

python run.py

🏛️ Архитектура

Система состоит из следующих основных модулей:

  • Индексатор: Модуль, отвечающий за обход сайтов, сбор текстового содержимого и создание индекса. (поиск xml файла или перебор всех страниц сайта)
  • Поисковый движок: Модуль, осуществляющий поиск по индексу и ранжирование результатов. Реализованы методы поиска по семантике, точному совпадению слов и BM25.
  • Веб-сайт (Django): Предоставляет API для поиска и отображает результаты поиска в удобном виде.
  • Приложение (Electron.js): Предоставляет интерфейс для управления индексацией, просмотра статистики и настройки системы.

🤝 Разработка и участие

RuPoisk разработан в модульном стиле, чтобы облегчить доработку и расширение системы. Разработчики могут легко добавлять новые функции, изменять существующие модули или разрабатывать собственные модули.

Мы приветствуем вклад сообщества! Вы можете:

  • Сообщать об ошибках.
  • Предлагать улучшения.
  • Отправлять pull requests.
  • Участвовать в обсуждениях.

📝 Лицензия

RuPoisk распространяется под лицензией MIT License.

About

modular, open-source search engine built with Python, Django, and Electron.js for indexing and searching Russian-language websites, offering a flexible and extensible platform for customized search solutions.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages