Устанавливайте опубликованный yeti3-search==1.2.3. Сетевые источники и разрешения на индексирование настраиваются в приложении.
Контекстный поиск SDK 1.2.3
search.contextual — единый поиск публичных материалов текущего сайта и сети.
Python API: Document, Index, index.upsert/remove/search. Индекс строится
в памяти из атомарного JSON-снимка; SQLite и миграции не используются.
from yeti3_search import Document, Index
index = Index([Document('https://example.ru/catalog/ring/', 'Серебряное кольцо',
'Ручная работа', kind='Товары', code='MR-042')])
index.search('серебряные кольца', site='example.ru', scope='site')
index.search('кольца', site='example.ru', scope='network', context='украшения')Пайплайн опирается на подход Artopt filter_server/search.js: нормализация,
русские окончания, основные/дополнительные поля, совпадение всех слов,
приоритет точного названия/артикула, взвешенная релевантность, пагинация.
Новый модуль добавляет исправление раскладки при пустой выдаче, контекстный
приоритет, фильтр раздела, фасеты сайтов и фрагмент около совпадения.
Обработка окончаний эвристическая; это не полный морфологический словарь
и не векторная семантическая модель.
Серверные адаптеры передают только явно разрешённые опубликованные документы.
Удаление и снятие с публикации должны вызывать index.remove(url). URL должен
быть каноническим HTTPS; нельзя передавать личные данные или приватные модели.
Сетевой адаптер собирает публичные sitemap/ссылки без cookies/авторизации,
учитывает robots/noindex, исключает служебные пути, query URL, загрузки и
переходы на чужие origin. Смена snapshot атомарна; при полном отказе предыдущий
индекс сохраняется. Частично недоступные источники отмечаются в status.
Страницы, существующие только после клиентского JS, требуют серверного
публичного адаптера или SSR; приватные рабочие документы не ищутся глобально.
Браузер: search.js, search.css, search.html. Кнопка в шапке, Ctrl/⌘ K, плавная панель
с автофокусом и отдельная страница; два режима, запрос с задержкой 240 мс, отмена устаревших
ответов, доступный фокус, безопасные DOM-сниппеты, загрузка следующей страницы.
Нативные формы /search/ подключены к тому же модулю. Каталожные фильтры имеют
собственные маршруты. JSON /search/live/ и /node/search остаются совместимыми.
Развёртывание и границы покрытия: deployment/contextual-search/README.md.
Версия 1.2.3: BM25 с нормализацией длины, исправление опечаток и перестановок букв,
точный приоритет артикула, исправление раскладки внутри выбранного сайта.
Следующее поколение индекса собирается в фоне; предыдущая выдача остаётся доступна.
Интерфейс наследует шрифт и палитру сайта, поддерживает recent searches, стрелки,
Escape, Ctrl/⌘K, возврат фокуса, мобильный экран и reduced motion.