diff --git a/CHANGELOG.md b/CHANGELOG.md index 06c38ebf..c9f42551 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ - Использование `--frozen` флага для uv для ускорения установки - **🔧 Frontend build fix**: Исправлена ошибка `vite: not found` через multi-stage build - **🔧 Rust compilation fix**: Исправлена ошибка компиляции `muvera` - копирование готовой `.venv` из builder stage + - **⚡ Search indexing optimization**: Исправлена избыточная реиндексация - проверка существующего индекса перед повторной индексацией + - **📁 Index path fix**: Унифицирован путь сохранения индекса (`/dump` с fallback на `./dump`) - **📁 .dockerignore**: Создан оптимизированный `.dockerignore` файл - Исключены все файлы разработки, тесты, документация, логи - Значительно уменьшен размер контекста сборки diff --git a/services/search.py b/services/search.py index 59d5840e..c88e2111 100644 --- a/services/search.py +++ b/services/search.py @@ -861,10 +861,17 @@ async def initialize_search_index(shouts_data: list) -> None: # Сначала пытаемся восстановить существующий индекс await search_service.async_init() - # Проверяем нужна ли переиндексация - if len(shouts_data) > 0: - await search_service.bulk_index(shouts_data) - logger.info(f"Initialized search index with {len(shouts_data)} documents") + # Проверяем нужна ли переиндексация - только если индекс пустой + if search_service.muvera_client and len(search_service.muvera_client.documents) == 0: + if len(shouts_data) > 0: + logger.info(f"Index is empty, starting bulk indexing of {len(shouts_data)} documents") + await search_service.bulk_index(shouts_data) + logger.info(f"Initialized search index with {len(shouts_data)} documents") + else: + logger.info("No documents to index") + else: + existing_count = len(search_service.muvera_client.documents) if search_service.muvera_client else 0 + logger.info(f"Search index already contains {existing_count} documents, skipping reindexing") except Exception as e: logger.exception(f"Failed to initialize search index: {e}")