docs: 记录 D2/D3 修复(P7-21/P7-22)
This commit is contained in:
+15
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
> 本文档按修复轮次详细记录所有搜索功能合规性修复的背景、根因分析和修改内容。
|
> 本文档按修复轮次详细记录所有搜索功能合规性修复的背景、根因分析和修改内容。
|
||||||
>
|
>
|
||||||
> **累计**:7 轮,95 项修复,50+ 字段标签注册,276 项测试覆盖
|
> **累计**:7 轮,97 项修复,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 行)
|
||||||
|
|
||||||
@@ -619,6 +619,20 @@
|
|||||||
- **问题**:解析器 `.upper()` 产生 `"TITLE/ABSTRACT"` 但 map 只有 `"Title/Abstract"`
|
- **问题**:解析器 `.upper()` 产生 `"TITLE/ABSTRACT"` 但 map 只有 `"Title/Abstract"`
|
||||||
- **修复**:增加大写键
|
- **修复**:增加大写键
|
||||||
|
|
||||||
|
### P7-21: PubMed 路径中文 tsquery 降级(D2)
|
||||||
|
|
||||||
|
- **文件**:`search_engine.py` `_field_condition("all")` L1198
|
||||||
|
- **问题**:PubMed 路径对无标签中文词(如 `肺癌` 在 `lung cancer OR 肺癌` 中)使用 `plainto_tsquery("english", 肺癌)` → tsvector 是英语配置 → 返回空 → 零结果。仅当 `[TI]`/`[AB]` 加字段标签或有通配符时才走 ILIKE
|
||||||
|
- **根因**:tsquery("english") 不索引中文字符
|
||||||
|
- **修复**:`_field_condition("all")` 默认路径新增中文检测 → ILIKE title/abstract 回退
|
||||||
|
|
||||||
|
### P7-22: 裸混合布尔 A OR B AND C 保留 AND 分组(D3)
|
||||||
|
|
||||||
|
- **文件**:`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
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 遗留限制
|
## 遗留限制
|
||||||
|
|||||||
Reference in New Issue
Block a user