search-index-metric

This commit is contained in:
2025-08-30 21:18:48 +03:00
parent f71a5bcdea
commit 906c9bbdf4
2 changed files with 32 additions and 2 deletions

View File

@@ -9,6 +9,26 @@ import numpy as np
from settings import MUVERA_INDEX_NAME, SEARCH_MAX_BATCH_SIZE, SEARCH_PREFETCH_SIZE
from utils.logger import root_logger as logger
# Простые метрики производительности поиска
class SearchMetrics:
def __init__(self):
self.indexing_start_time: float | None = None
self.documents_indexed: int = 0
def start_indexing(self, doc_count: int):
self.indexing_start_time = time.time()
self.documents_indexed = doc_count
print(f"🔍 Индексация {doc_count} документов...")
def end_indexing(self):
if self.indexing_start_time:
duration = time.time() - self.indexing_start_time
rate = self.documents_indexed / duration if duration > 0 else 0
print(f"✅ Индексация завершена за {duration:.2f}s ({rate:.1f} doc/s)")
# Глобальный экземпляр метрик
search_metrics = SearchMetrics()
# Global collection for background tasks
background_tasks: List[asyncio.Task] = []
@@ -127,7 +147,12 @@ class SearchService:
# Get Muvera service info
if self.muvera_client:
muvera_info = await self.muvera_client.info()
return {"status": "enabled", "provider": "muvera", "mode": "local", "muvera_info": muvera_info}
return {
"status": "enabled",
"provider": "muvera",
"mode": "local",
"muvera_info": muvera_info
}
return {"status": "error", "message": "Muvera client not available"}
except Exception:
logger.exception("Failed to get search info")
@@ -280,6 +305,8 @@ class SearchService:
)
return
# Запускаем метрики индексации
search_metrics.start_indexing(len(shouts))
start_time = time.time()
logger.info(f"Starting Muvera bulk indexing of {len(shouts)} documents")
@@ -291,7 +318,7 @@ class SearchService:
try:
# Prepare document data for Muvera
doc_data: Dict[str, Any] = {
"id": str(shout.id),
"id": str(getattr(shout, "id", "")),
"title": getattr(shout, "title", "") or "",
"body": "",
"metadata": {},
@@ -351,6 +378,8 @@ class SearchService:
f"Muvera bulk indexing completed in {elapsed:.2f}s: "
f"{len(documents)} documents indexed, {total_skipped} shouts skipped"
)
# Завершаем метрики индексации
search_metrics.end_indexing()
except Exception as e:
logger.exception(f"Muvera bulk indexing failed: {e}")
else: