docs: 记录 P7-23 混合布尔引擎分支修复
This commit is contained in:
+9
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
> 本文档按修复轮次详细记录所有搜索功能合规性修复的背景、根因分析和修改内容。
|
||||
>
|
||||
> **累计**:7 轮,97 项修复,50+ 字段标签注册,276 项测试覆盖
|
||||
> **累计**:7 轮,98 项修复,50+ 字段标签注册,276 项测试覆盖
|
||||
> **时间跨度**:2026-07-24 ~ 2026-07-27
|
||||
> **核心文件**:`pubmed_query_parser.py`(~730 行)→ `search_engine.py`(~1320 行)
|
||||
|
||||
@@ -631,7 +631,14 @@
|
||||
- **文件**:`pubmed_query_parser.py` `_parse_or_expr()` L475
|
||||
- **问题**:`A OR B AND C` 被拉平为 3 个 term OR:`A OR B OR C`。PubMed 语义应是 `A OR (B AND C)`
|
||||
- **根因**:`_parse_or_expr` 对 `left`/`right` 做 `extend`,AND cluster 全部拉平
|
||||
- **修复**:收集各 `_parse_and_expr` 结果为独立 cluster,OR 存在时将 >1 term 的 cluster 包装为 group + `group_operators="and"`。引擎 OR 模式将 groups 互相 OR,组内 AND
|
||||
- **修复**:收集各 `_parse_and_expr` 结果为独立 cluster,OR 存在时将 >1 term 的 cluster 包装为 group + `group_operators="and"`。引擎 OR/mixed 模式将所有正条件 OR 合并,组内 AND
|
||||
|
||||
### P7-23: 混合布尔引擎分支 — boolean_operator="mixed" 丢失 OR
|
||||
|
||||
- **文件**:`search_engine.py` `_pubmed_conditions()` L616, L952
|
||||
- **问题**:`A OR B AND C` → parser 产 `boolean_operator="mixed"`。引擎只处理了 `=="or"`,`"mixed"` 落到 else(AND),组间 OR 完全丢失
|
||||
- **根因**:`boolean_operator` 有三种值(and/or/mixed),引擎只有二分支
|
||||
- **修复**:`field_combine` 和 `term_conditions` 合并都改为 `in ("or", "mixed")`
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user