Exact.

#python#evalidate#SEO#search#fastapi#docker

Я не знаю, как именно назвать Exact:

В общем, это готовый унифицированный бэкенд для поиска, совместимый с любым датасетом. (список словарей с любыми полями)

На входе - данные из СУБД, или из JSON/YAML файла или URL. Через HTTP можно по ним искать. Типичный пример использования - поиск по товарам в онлайн-магазине, на уровне хороших маркетплейсов, вроде яндекс-маркета и Озона.

Зачем это нужно?

Как это работает

Exact основан на Docker / FastAPI / Evalidate.

При старте - загружает в себя данные и больше не обращается к СУБД/файлам для поиска.

Поисковый запрос с фронтенда приходит в синтаксисе Python expression, например price<123.45 and vendor in ["Apple", "Samsung"]. Запрос компилируется в AST дерево и проверяется через evalidate (чтобы оставить только безопасные запросы и не допустить никаких опасных операций). Затем уже скомпилированный безопасный запрос применяется ко всем записям в датасете. За счет того, что все данные у нас уже в памяти, а код уже скомпилирован - это дает очень высокую скорость (200мс на фильтрацию 1 миллиона записей). Время поиска меньше, чем время, которое уходит на сетевые операции отправки-получения запроса и отрисовку контента.

Дополнительные плюшечки

Read-only доступ (поиск или получение какой-то записи) - анонимный, не требует никакой авторизации. Но тем не менее, можно включить и write доступ (по Bearer токену и с whitelist IP). В этом случае можно перегружать (обновлять) датасет, удалять записи или “патчить” их. Например, когда все запасы товара проданы, можно поставить onstock=False чтобы больше он не находился поиском.

Есть агрегации - например, при указании каких-то параметров поиска (например, бренды), можно сразу получить минимальную и максимальную стоимость (а так же просуммировать или посчитать среднее).

А это безопасно?

Да. Гораздо более безопасно, чем самописно написанный “традиционный” бэкенд работающий с базой. Во-первых, весь стек технологий - open source, и вы можете сами проверить его. Сам exact - достаточно небольшое и простое приложение. Легко убедиться в его безопасности.

К тому же, “параноидальное” использование Exact подразумевает тройную изоляцию:

Shinhub - реактивный шинный сайт

Для демонстрации есть шинный сайт shinhub.ru, использующий Exact для быстрого поиска по базе товаров.