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两种方式)
-
- 新增批量索引接口: POST /indexer/bulk - 全量索引功能 - SPU接口改进: POST /indexer/spus - 支持批量获取SPU文档(最多100个) 新增 全量索引服务 indexer/bulk_indexing_service.py docs/搜索API对接指南.md - 新增索引接口文档: 详细的批量索引和SPU索引接口说明 - 请求示例: 提供完整的curl命令示例
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翻译关闭功能 - 验证全量和增量索引功能
03 Dec, 2025
2 commits
-
{ "facets": [ { "field": "category1_name", "size": 15, "type": "terms" }, "specifications.color", "specifications.size" ] } { "facets": [ {"field": "category1_name", "size": 15, "type": "terms"}, {"field": "specifications.color", "size": 10, "type": "terms"}, {"field": "specifications.size", "size": 10, "type": "terms"} ] } 之前是上面的接口形式,主要是考虑 属性的分面, 因为 款式都是有限的 不需要设定 "size": 10, "type": "terms" 这些参数。 但是从接口设计层面,最好按下面这样,这样的话 specifications.color 和 category1_name 的组装格式 完全一样。前端不需要感知 属性分面 和 类别等其他字段分面的差异。 -
2. mysql->ES数据灌入脚本优化。修改了多个字段的处理方式,完善日志,为以后抽出来服务供java全量增量调用做准备
02 Dec, 2025
1 commit
-
1. 加了一个配置searchable_option_dimensions,功能是配置子sku的option1_value option2_value option3_value 哪些参与检索(进索引、以及在线搜索的时候将对应字段纳入搜索field)。格式为list,选择三者中的一个或多个。 2. 索引 @mappings/search_products.json 要加3个字段 option1_values option2_values option3_values,各自的 数据灌入(mysql->ES)的模块也要修改,这个字段是对子sku的option1_value option2_value option3_value分别提取去抽后得到的list。 searchable_option_dimensions 中配置的,才进索引,比如 searchable_option_dimensions = ['option1'] 则 只对option1提取属性值去重组织list进入索引,其余两个字段为空 3. 在线 对应的将 searchable_option_dimensions 中 对应的索引字段纳入 multi_match 的 fields,权重设为0.5 (各个字段的权重配置放到一起集中管理) 1. 配置文件改动 (config/config.yaml) ✅ 在 spu_config 中添加了 searchable_option_dimensions 配置项,默认值为 ['option1', 'option2', 'option3'] ✅ 添加了3个新字段定义:option1_values, option2_values, option3_values,类型为 KEYWORD,权重为 0.5 ✅ 在 default 索引域的 fields 列表中添加了这3个字段,使其参与搜索 2. ES索引Mapping改动 (mappings/search_products.json) ✅ 添加了3个新字段:option1_values, option2_values, option3_values,类型为 keyword 3. 配置加载器改动 (config/config_loader.py) ✅ 在 SPUConfig 类中添加了 searchable_option_dimensions 字段 ✅ 更新了配置解析逻辑,支持读取 searchable_option_dimensions ✅ 更新了配置转换为字典的逻辑 4. 数据灌入改动 (indexer/spu_transformer.py) ✅ 在初始化时加载配置,获取 searchable_option_dimensions ✅ 在 _transform_spu_to_doc 方法中添加逻辑: 从所有子SKU中提取 option1, option2, option3 值 去重后存入 option1_values, option2_values, option3_values 根据配置决定哪些字段实际写入数据(未配置的字段写空数组) =
29 Nov, 2025
1 commit
26 Nov, 2025
1 commit
25 Nov, 2025
2 commits
-
mappings/search_products.json - 完整的ES索引配置(settings + mappings) 基于 docs/索引字段说明v2-mapping结构.md 简化 mapping_generator.py 移除所有config依赖 直接使用 load_mapping() 从JSON文件加载 保留工具函数:create_index_if_not_exists, delete_index_if_exists, update_mapping 更新数据导入脚本 scripts/ingest_shoplazza.py - 移除ConfigLoader依赖 直接使用 load_mapping() 和 DEFAULT_INDEX_NAME 更新indexer模块 indexer/__init__.py - 更新导出 indexer/bulk_indexer.py - 简化IndexingPipeline,移除config依赖 创建查询配置常量 search/query_config.py - 硬编码字段列表和配置项 使用方式 创建索引: from indexer.mapping_generator import load_mapping, create_index_if_not_existsfrom utils.es_client import ESClientes_client = ESClient(hosts=["http://localhost:9200"])mapping = load_mapping()create_index_if_not_exists(es_client, "search_products", mapping) 数据导入: python scripts/ingest_shoplazza.py \ --db-host localhost \ --db-database saas \ --db-username root \ --db-password password \ --tenant-id "1" \ --es-host http://localhost:9200 \ --recreate 注意事项 修改mapping:直接编辑 mappings/search_products.json 字段映射:spu_transformer.py 中硬编码,与mapping保持一致 config目录:保留但不再使用,可后续清理 search模块:仍依赖config
-
主要是对 分类 属性 子sku 等重要字段的处理。 参考文档《 @docs/索引字段说明v2-mapping结构.md 》《 @docs/索引字段说明v2.md 》 feat: 1. 更新 field_types.py 添加 hanlp_index/hanlp_standard 分析器映射(映射到 CHINESE_ECOMMERCE/CHINESE_ECOMMERCE_QUERY) 支持 keyword_normalizer 配置(用于 vendor.keyword 的 lowercase normalizer) 更新 get_default_analyzers() 添加 hanlp 分析器和 lowercase normalizer 修复 image_embedding 的 url 字段类型为 text 2. 更新 config.yaml(32-207行) 移除无用字段:handle, seo_title, seo_description, seo_keywords, shoplazza_created_at, shoplazza_updated_at 添加中英文字段:title_zh, title_en, brief_zh, brief_en, description_zh, description_en, vendor_zh, vendor_en 添加 category 多层级字段:category_path_zh, category_path_en, category_name_zh, category_name_en, category_id, category_name, category_level, category1_name, category2_name, category3_name 添加 specifications 嵌套字段 添加 option 名称字段:option1_name, option2_name, option3_name 添加 SKU 扁平化字段:sku_prices, sku_weights, sku_weight_units, total_inventory 更新 skus 嵌套结构以匹配目标 mapping 添加 image_embedding 嵌套字段 更新 indexes 配置以使用新字段名 3. 更新 config_loader.py 添加 keyword_normalizer 字段支持 4. 重构 spu_transformer.py 添加 load_option_data() 方法从 option 表加载数据 更新 transform_batch() 加载 option 数据 重构 _transform_spu_to_doc(): 实现中英文字段映射(暂时只填充中文) 实现 category 多层级字段映射和 category_path 解析 实现 specifications 构建(从 option 表获取 name,从 SKU 获取 value) 实现 option 名称字段映射 实现 SKU 扁平化字段计算 更新 skus 嵌套结构 重构 _transform_sku_row() 以匹配新的 SKU 结构 移除 SEO 和 handle 字段的处理
14 Nov, 2025
4 commits
-
2. 向量服务不用本地预估,改用网络服务
13 Nov, 2025
3 commits
-
主要变更: 1. 去掉数据源应用结构配置化,我们只针对店匠的spu sku表设计索引,数据灌入流程是写死的(只是满足测试需求,后面外层应用负责数据全量+增量灌入)。搜索系统主要关注如何适配外部搜索需求 目前有两个数据灌入脚本,一种是之前的,一种是现在的从两个店匠的表sku表+spu表读取并且以spu为单位组织doc。 - 配置只关注ES搜索相关配置,提高可维护性 - 创建base配置(店匠通用配置) 2. 索引结构重构(SPU维度) - 所有客户共享search_products索引,通过tenant_id隔离 - 支持嵌套variants字段(SKU变体数组) - 创建SPUTransformer用于SPU数据转换 3. API响应格式优化 - 约定一套搜索结果的格式,而不是直接暴露ES doc的结构(_id _score _source内的字段) - 添加ProductResult和VariantResult模型 - 添加suggestions和related_searches字段 (预留接口,逻辑暂未实现) 4. 数据导入流程 - 创建店匠数据导入脚本(ingest_shoplazza.py) - Pipeline层决定数据源,配置不包含数据源信息 - 创建测试数据生成和导入脚本 5. 文档更新 - 更新设计文档,反映新架构 - 创建BASE_CONFIG_GUIDE.md使用指南
11 Nov, 2025
1 commit
10 Nov, 2025
1 commit
08 Nov, 2025
1 commit