19 Dec, 2025

1 commit

  • 1. 添加 asyncio 导入
    在文件顶部添加 import asyncio,用于在线程池中执行同步阻塞操作
    2. 修改 /indexer/reindex 路由(全量索引)
    使用 loop.run_in_executor() 将 service.bulk_index() 放到线程池执行
    避免阻塞事件循环,允许其他请求并行处理
    3. 修改 /indexer/index 路由(增量索引)
    使用 loop.run_in_executor() 将 service.index_spus_to_es() 放到线程池执行
    确保全量索引和增量索引可以并行执行
    工作原理
    线程池执行:同步阻塞操作(如数据库查询、ES 写入)在线程池中执行,不阻塞事件循环
    并发支持:
    全量索引占用一个线程
    增量索引可同时使用其他线程
    多个增量请求可并行处理
    资源管理:
    数据库连接池(pool_size=10, max_overflow=20)可支持并发请求
    uvicorn 默认线程池(40 个线程)可处理多个并发请求
    tangwang
     

18 Dec, 2025

2 commits

  • 新增:scripts/recreate_index.py
    功能:初始化 indexer 的 ES/DB 服务,然后调用 BulkIndexingService.bulk_index(…, recreate_index=True) 为指定 tenant_id 做「删除并重建索引 + 全量导入」。
    用法示例:
    cd /home/tw/SearchEngine# 使用默认 batch_size=500python scripts/recreate_index.py 162# 指定 batch_sizepython scripts/recreate_index.py 162 --batch-size 1000
    脚本依赖和 Indexer API 一样的环境变量:DB_HOST/DB_PORT/DB_DATABASE/DB_USERNAME/DB_PASSWORD、ES_HOST/ES_USERNAME/ES_PASSWORD。
    2. 清理与引用更新
    原来的 scripts/recreate_index.sh 已经删除。
    api/routes/indexer.py 里的说明改成引用 scripts/recreate_index.py。
    docs/搜索API对接指南.md 中的提示也从 .sh 改为:
    > python scripts/recreate_index.py <tenant_id> [--batch-size 500]
    tangwang
     
  • 新增 api/indexer_app.py,在独立进程(默认 6004)中初始化 ES + DB + 索引服务,并复用 api/routes/indexer.py 一套路由
    新增 api/service_registry.py,通过注册表向索引路由注入 ES 客户端和索引服务,消除重复代码与循环依赖
    main.py 增加 serve-indexer 子命令;scripts/start.sh / stop.sh / start_backend.sh / start_indexer.sh 支持独立管理索引进程
    文档中所有索引相关示例由 6002/indexer/* 统一调整为 6004/indexer/*
    tangwang
     

09 Dec, 2025

2 commits


08 Dec, 2025

2 commits

  • 新增功能:
    - 新增 POST /indexer/index 增量索引接口,支持按SPU ID列表进行增量索引
    - 新增 indexer/indexer_logger.py 索引日志模块,统一记录全量和增量索引日志到 logs/indexer.log(JSON格式)
    - IncrementalIndexerService 新增 index_spus_to_es 方法,实现增量索引功能
    
    接口重命名:
    - POST /indexer/bulk -> POST /indexer/reindex(全量重建索引)
    - POST /indexer/incremental -> POST /indexer/index(增量索引)
    - POST /indexer/spus -> POST /indexer/documents(查询文档)
    
    日志系统:
    - 全量和增量索引操作统一记录到 logs/indexer.log
    - 记录请求参数、处理过程、ES写入结果、成功/失败统计等关键信息
    - 支持按索引类型、租户ID、SPU ID等维度查询日志
    
    文档更新:
    - 更新接口文档,包含新的接口命名和增量索引接口说明
    - 添加日志查询示例(grep和jq两种方式)
    tangwang
     
  • - 新增批量索引接口: POST /indexer/bulk - 全量索引功能
      - SPU接口改进: POST /indexer/spus - 支持批量获取SPU文档(最多100个)
    
    新增 全量索引服务
    indexer/bulk_indexing_service.py
    
    docs/搜索API对接指南.md
      - 新增索引接口文档: 详细的批量索引和SPU索引接口说明
      - 请求示例: 提供完整的curl命令示例
    tangwang
     

07 Dec, 2025

1 commit

  • 主要功能:
    1. 增量数据获取服务
       - 新增 IncrementalIndexerService 提供单个SPU数据获取
       - 新增 /indexer/spu/{spu_id} API接口
       - 服务启动时预加载分类映射等公共数据
       - 提取 SPUDocumentTransformer 统一全量和增量转换逻辑
       - 支持根据租户配置进行语言处理和翻译
    
    3. 租户配置系统
       - 租户配置合并到统一配置文件 config/config.yaml
       - 支持每个租户独立配置主语言和翻译选项
       - 租户162配置为翻译关闭(用于测试)
    
    4. 翻译功能集成
       - 翻译提示词作为DeepL API的context参数传递
       - 支持中英文提示词配置
       - 索引场景:同步翻译,使用缓存
       - 查询场景:异步翻译,立即返回
    
    测试:
    - 新增 indexer/test_indexing.py 和 query/test_translation.py
    - 验证租户162翻译关闭功能
    - 验证全量和增量索引功能
    tangwang