26 Jan, 2026

2 commits


24 Jan, 2026

1 commit


09 Jan, 2026

3 commits


07 Jan, 2026

1 commit


06 Jan, 2026

5 commits

  • tangwang
     
  • tangwang
     
  • tangwang
     
  • mappings/search_products.json:把原来的 title_zh/title_en/brief_zh/... 改成 按语言 key 的对象结构( /products/_doc/1 { "title": {"en":...} } )
    同时在这些字段下 预置了全部 analyzer 语言:
    arabic, armenian, basque, brazilian, bulgarian, catalan, chinese, cjk, czech, danish, dutch, english, finnish, french, galician, german, greek, hindi, hungarian, indonesian, italian, norwegian, persian, portuguese, romanian, russian, spanish, swedish, turkish, thai
    
    实现为 type: object + properties,同时满足“按语言灌入”和“按语言 analyzer”。
    索引灌入(全量/增量/transformer)已同步改完
    indexer/document_transformer.py:输出从 title_zh/title_en/... 改为:
    title: {<primary_lang>: 原文, en?: 翻译, zh?: 翻译}
    brief/description/vendor 同理
    category_path/category_name_text 也改为语言对象(避免查询侧继续依赖旧字段)
    indexer/incremental_service.py:embedding 取值从 title_en/title_zh 改为从 title 对象里优先取 en,否则取 zh,否则取任一可用语言。
    查询侧与配置、API/文档已同步
    search/es_query_builder.py:查询字段统一改成点路径:title.zh / title.en / vendor.zh / vendor.zh.keyword / category_name_text.zh 等。
    config/config.yaml:field boosts / indexes 里的字段名同步为新点路径。
    API & formatter:
    api/result_formatter.py 已支持新结构(并保留对旧 *_zh/_en 的兼容兜底)。
    api/models.py、相关 docs/examples 里的 vendor_zh.keyword 等已更新为 vendor.zh.keyword。
    文档/脚本:docs/、README.md、scripts/ 里所有旧字段名引用已批量替换为新结构。
    tangwang
     
  • tangwang
     

04 Jan, 2026

1 commit


31 Dec, 2025

4 commits


29 Dec, 2025

2 commits


27 Dec, 2025

2 commits


26 Dec, 2025

3 commits


25 Dec, 2025

3 commits


22 Dec, 2025

5 commits


20 Dec, 2025

2 commits


19 Dec, 2025

6 commits

  • tangwang
     
  • cache/service 任一环节返回坏 embedding(含 NaN/Inf/空/非 ndarray)都会 视为 None,并且坏 cache 会被自动删除。
    tangwang
     
  • tangwang
     
  • 1. api/indexer_app.py(索引服务,端口 6004)
    在 startup_event() 中添加线程池大小配置
    使用 anyio.to_thread.current_default_thread_limiter() 设置线程池大小为 48
    添加日志记录,便于确认配置是否生效
    2. api/app.py(搜索服务,端口 6002)
    在 startup_event() 中添加线程池大小配置
    同样设置为 48 个线程
    添加日志记录
    tangwang
     
  • 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
     
  • 1. 删除 IndexingPipeline 类
    文件:indexer/bulk_indexer.py
    删除:IndexingPipeline 类(第201-259行)
    删除:不再需要的 load_mapping 导入
    2. 删除 main.py 中的旧代码
    删除:cmd_ingest() 函数(整个函数)
    删除:ingest 子命令定义
    删除:main() 中对 ingest 命令的处理
    删除:不再需要的 pandas 导入
    更新:文档字符串,移除 ingest 命令说明
    3. 删除旧的数据导入脚本
    删除:data/customer1/ingest_customer1.py(依赖已废弃的 DataTransformer 和 IndexingPipeline)
    tangwang