БД (хранилище) для документов с GUI, ранжированием и поиском. Какие фреймворки или готовые решения есть?

Имеются некоторые однотипные данные:
  • объявления о работе;
  • новости;
  • персональные дела...

Хочется сделать систему в которой:
а) новости я добавляю через python;
б) через web интерфейс, могу всё просмотреть (с настройкой фильтрации, с поиском, ранжированием) и, главное(!), я могу оценить новость;
в) все последующие новости могут ранжироваться в зависимости от ранее поставленных оценок (к примеру методом ближайшего соседа через нечеткое сравнение). Этот пункт, пожалуй, самый важный - мне нужно малоинтересные новости задвинуть вниз, основываясь на моих предпочтениях.

Может кто-то подобное видел? Какие технологии (с прицелом на Питон) имеет смысл смотреть? К примеру наткнулся на Elasticsearch, Django Elasticsearch backend и Kibana, Arctic, Marvel для web интерфейса. Но я ни с чем подобным не сталкивался.
PS. проект домашний, будет развернут локально, больших вложений хочется избежать.

Добавка: возможно кто-то подскажет неожиданное решение через почтовый клиент, через Notion, Obsidian? Что-то готовое для работы с заметками, но так, что бы я мог добраться к заметкам через Питон. Объем заметок меньше гигабайта.
  • Вопрос задан
  • 1034 просмотра
Пригласить эксперта
Ответы на вопрос 3
Maksim_64
@Maksim_64
Data Analyst
1. pandas для манипуляций с данными и построения пайплайна.
2. nltk + scikit-learn для работы с текстом (ранжирования, трансформации в векторное пространство, алгоритмы сравнения для различных метрик и т.д)
3. plotly+dash (для веб интерфейса с возможностью собрать красивый фронт на python (react, html, css) на все это есть python обертка) + dash bootstrap components коллекция крутых готовых компонентов.

Примеры готовых качественных веб приложений Галерея код есть на гитхаб, там же найдешь.

БД тоже подсоединяется без проблем, примеры в документации. Вообще очень упрощая dash это способ превратить модели машинного обучения в веб приложение. Со всеми сопутствующими потребностями.
Ответ написан
Комментировать
б) через web интерфейс, могу всё просмотреть (с настройкой фильтрации, с поиском, ранжированием) и, главное(!), я могу оценить новость;
в) все последующие новости могут ранжироваться в зависимости от ранее поставленных оценок
Дополнительное поле rank
б) сохранение оценки в хранилище
в) чтение из него
Добавляешь дополнительные критерии (фильтрация и дате, названию и пр.) и должно быть достаточно для поиска.

Сущности: новости, оценки.
категории (рубрики) , для простоты, можно сделать в качестве поля в "новости".

Sphinx Search, OpenSearch/ElasticSearch, Apache Solr - с одной стороны, они на слуху, но настройка и сопровождение могут быть обременительными.
Возможно, достаточно и Postgresql. Тут надо проверить насколько эффективно будет решение с точки зрения поиска.

Компоненты:
1. DB
2. шаблоны Django (для простоты) или REST API с веб-интерфейсом отдельными приложениями

Разворачивать решение можно на Docker Compose.

Добавлено
Если нужно взять полуготовые решения, тогда Wagtail, WordPress могут подойти.
Ответ написан
А просто CMS не подойдет? По описанию она делает все что нужно. Вопрос только в кол-ве документов. Если их несколько десятков тысяч, то будет подтормаживать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы