docs: 记录 P7-23 混合布尔引擎分支修复
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s

This commit is contained in:
34047007@qq.com
2026-07-27 15:15:36 +08:00
parent 2169308e67
commit 5a3e5c03cd
+9 -2
View File
@@ -2,7 +2,7 @@
> 本文档按修复轮次详细记录所有搜索功能合规性修复的背景、根因分析和修改内容。 > 本文档按修复轮次详细记录所有搜索功能合规性修复的背景、根因分析和修改内容。
> >
> **累计**7 轮,97 项修复,50+ 字段标签注册,276 项测试覆盖 > **累计**7 轮,98 项修复,50+ 字段标签注册,276 项测试覆盖
> **时间跨度**2026-07-24 ~ 2026-07-27 > **时间跨度**2026-07-24 ~ 2026-07-27
> **核心文件**`pubmed_query_parser.py`~730 行)→ `search_engine.py`~1320 行) > **核心文件**`pubmed_query_parser.py`~730 行)→ `search_engine.py`~1320 行)
@@ -631,7 +631,14 @@
- **文件**`pubmed_query_parser.py` `_parse_or_expr()` L475 - **文件**`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)` - **问题**`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_or_expr` 对 `left`/`right` 做 `extend`AND cluster 全部拉平
- **修复**:收集各 `_parse_and_expr` 结果为独立 clusterOR 存在时将 >1 term 的 cluster 包装为 group + `group_operators="and"`。引擎 OR 模式将 groups 互相 OR,组内 AND - **修复**:收集各 `_parse_and_expr` 结果为独立 clusterOR 存在时将 >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")`
--- ---