fix(indexer): не дублировать полный текст, если он уже есть у парсера
add_document слал index.enrich_full_text для КАЖДОГО документа с url, даже когда full_text уже пришёл от парсера (у КиберЛенинки — OCR-фрагмент прямо в ответе поиска). Страница статьи там HTML, не PDF — enrich гарантированно ничего не находит, только тратит запрос впустую. При массовой заливке (десятки источников параллельно) это давало шквал запросов к чужому сайту и 503 в ответ — саму заливку не ломало, но съедало время и нагружало источник без всякой пользы.
This commit is contained in:
@@ -325,8 +325,12 @@ def add_document(doc_data: dict[str, Any], dispatch_embed: bool = True) -> dict[
|
|||||||
queue="queue.gpu",
|
queue="queue.gpu",
|
||||||
)
|
)
|
||||||
|
|
||||||
# Обогащение полным текстом: скачать PDF по url и пересчитать fingerprints
|
# Обогащение полным текстом: скачать PDF по url и пересчитать fingerprints.
|
||||||
if settings.FETCH_FULL_TEXT and doc_data.get("url"):
|
# Если full_text уже есть (например, OCR-фрагмент из ответа поиска
|
||||||
|
# КиберЛенинки) — не дублируем запрос: страница статьи там HTML, а не PDF,
|
||||||
|
# enrich_full_text гарантированно ничего не найдёт, только зря нагрузит
|
||||||
|
# источник (и получит 503 при массовой заливке).
|
||||||
|
if settings.FETCH_FULL_TEXT and doc_data.get("url") and not doc_data.get("full_text"):
|
||||||
celery_app.send_task(
|
celery_app.send_task(
|
||||||
"index.enrich_full_text",
|
"index.enrich_full_text",
|
||||||
args=[doc_id, doc_data["url"]],
|
args=[doc_id, doc_data["url"]],
|
||||||
|
|||||||
Reference in New Issue
Block a user