Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Halva773/Fuzzy-search

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Нечеткий поиск

Alt

Запуск через Docker

git clone https://github.com/Halva773/Fuzzy-search.git # Клонирование репозитория
cd Fuzzy-search # Переходим в папку с проектом
cp .env.example .env # Создаём файл .env на основе примера

Файл .env используется в проекте, но не опубликован на гите. Примером файла служит .env.exmaple. После создания можете поменять необходимые вам ключи и переменные

docker build . -t fuzzy-search
docker run -p 8000:8000 -t fuzzy-search

Тема работы

Алгоритмы нечеткого поиска являются основой систем проверки орфографии и полноценных поисковых систем вроде Google или Yandex. Например, такие алгоритмы используются для функций наподобие «Возможно вы имели в виду …» в тех же поисковых системах. К ознакомлению

Реализовано 2 вида алгоритма:

  • Расстояние Левенштейна
  • Хеширование по сигнатуре

Этапы реализации

  1. Базовая реализация с использованием HTTP-протоколов (GET, POST)
  2. Интеграция веб-сокетов для real-time взаимодействия
  3. Внедрение Redis и Celery для асинхронного выполнения задач

Общие требования к проектам

  • Использование FastAPI в качестве веб-фреймворка
  • SQLite как база данных
  • SQLAlchemy для ORM (Object-Relational Mapping)
  • Реализация авторизации по email и паролю
  • Аутентификация с использованием JWT (JSON Web Tokens)

Структура проекта

project/
├── app/
│ ├── api/ # эндпоинты
│ ├── core/ # config
│ ├── db/ # файл базы данных и сессия подключения
│ ├── models/ # модели для базы данных
│ ├── cruds/ # ORM CRUD операции
│ ├── schemas/ # схемы запросов
│ ├── services/ # доп. сервисы, в нашем случае тут будет лежать логика под лабы
│ └── main.py
├── alembic/
└── .env

Эндпоинты

Регистрация нового пользователя

@router.post("/sign-up/") Проверяет, не зарегистрирован ли уже пользователь с таким email. Если нет, создает нового пользователя и генерирует для него токен. Возвращает данные созданного пользователя.

Вход в систему

@router.post("/login/") Проверяет существование пользователя с указанным email. Проверяет правильность введенного пароля. Если все верно, генерирует новый токен для пользователя. Возвращает данные пользователя с новым токеном.

Получение информации о текущем пользователе

@router.get("/users/me/") Возвращает данные авторизованного пользователя.

Данные о пользователе должны сохраняться в базу данных для чего вам надо написать круды. Необходимо пользоваться alembic для миграции базы данных.

Копруса текстов

@app.post("/upload_corpus")
Загружает корпус текста для индексации и поиска.

@app.get("/corpuses")
Возвращает список корпусов c идентификаторами.

@app.post("/search_algorithm")
Позволяет указать слово (для поиска), тип алгоритма (которым можно искать), корпус (который можно использовать) и возвращает время работы алгоритма + результат поиска.

Releases

No releases published

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.