fix: 修复'邀请活动持续到几月几号'查询返回错误位置

- non_core_kw添加'几月','几号','几日','什么时候','何时'等时间疑问词过滤
- SYNONYMS添加'持续到'→'持续时间','到几月'→'持续时间'等同义词映射
- knowledge_base.py添加持续时间意图加权:heading含'持续时间'的section×4.0
- 根因:'几月'/'几号'被当作核心关键词参与匹配,root heading含'邀请'+'活动'
  获得heading_hits加分但body为空,压过了真正含答案的'### 持续时间'section
- 验证:修复后'### 持续时间'section得分189.82(第1),root heading仅27.13(第2)
This commit is contained in:
youpaishidifu
2026-09-20 10:30:40 +08:00
parent 91b5665e27
commit 9fb2634609
3 changed files with 18 additions and 0 deletions
+13
View File
@@ -48,6 +48,12 @@ class KnowledgeBase:
# ⭐ 口语"云包"= 云背包(用户常说"云包插件",OCR识别"云背包"为"云包")
# 修复"怎么装那个云包插件?"无法命中beibao.md的安装方法section
"云包": ["云背包"],
# ⭐ 时间口语"持续到"= 持续时间(用户常说"活动持续到几月几号")
# 修复"邀请活动持续到几月几号"无法命中invite.md"### 持续时间"section
"持续到": ["持续时间"],
"持续多久": ["持续时间"],
"到几月": ["持续时间"],
"到几号": ["持续时间"],
}
@staticmethod
@@ -671,6 +677,13 @@ class KnowledgeBase:
if (any(w in query_stripped for w in ('怎么配置', '如何配置', '配置方法', '配置步骤', '配置教程', '怎么设置', '如何设置'))
and '配置' in heading_clean):
combined_scores[i] *= 4.0
# ⭐ 持续时间意图加权:查询含"持续到几月/到几号/什么时候"等,heading含"持续时间"的section加权
# 修复"邀请活动持续到几月几号"被root heading"草原探险服务器玩家邀请活动奖励规则"
# 压过"### 持续时间"section的问题。根因:root heading含"邀请"+"活动"获得heading_hits加分,
# 但body为空无实际内容。"持续时间"heading虽只含"持续"但有真实答案。
if (any(w in query_stripped for w in ('持续到', '持续多久', '到几月', '到几号', '什么时候', '持续时间', '活动时间', '活动日期', '截止', '结束时间'))
and '持续时间' in heading_clean):
combined_scores[i] *= 4.0
# ⭐ 兑换码插件特殊加权:查询含"兑换码插件"且文档标题含"sdf1"→ 巨幅加权
# 修复"兑换码插件怎么用"被"CDK管理"section压过的问题
if ('兑换码插件' in query_stripped and 'sdf1' in doc.get('title', '').lower()):