12 Nov, 2025
4 commits
-
核心改动: 1. 修复facets类型问题 - 统一使用Pydantic模型(FacetResult, FacetValue) - SearchResult.facets改为List[FacetResult] - _standardize_facets直接构建Pydantic对象 2. 修复RangeFilter支持日期时间 - RangeFilter字段改为Union[float, str] - 支持数值范围和ISO日期时间字符串 - 修复前端listing time筛选422错误 3. 重构ES查询结构(核心) - 使用function_score包裹整个查询 - 文本和KNN放入内层bool.should(minimum_should_match=1) - Filter在外层bool,同时作用于文本和KNN查询 - 添加时效性加权函数(days_since_last_update<=30 weight:1.1) 4. RankingEngine重构 - 重命名为RerankEngine(语义更准确) - 默认禁用(enabled=False) - 优先使用ES的function_score打分 5. 统一约定原则 - 移除所有字典兼容代码 - 全系统统一使用Pydantic模型 - build_facets只接受str或FacetConfig - _build_filters直接接受RangeFilter模型 修改文件: - search/multilang_query_builder.py: 重构查询构建逻辑 - search/es_query_builder.py: 统一Pydantic模型支持 - search/searcher.py: 使用RerankEngine,更新导入 - search/rerank_engine.py: 新建(从ranking_engine.py重命名) - search/ranking_engine.py: 删除 - search/__init__.py: 更新导出 - api/models.py: RangeFilter支持Union[float, str] 测试验证: ✓ Facets正常返回 ✓ Filter同时作用于文本和KNN ✓ 日期时间范围过滤正常 ✓ Function score时效性加权正常 ✓ 所有测试通过 架构原则:统一约定,不做兼容,保持简单
11 Nov, 2025
1 commit
08 Nov, 2025
1 commit