From 82a71c6dc97915ed9eb1c4205f4df5e56f9d5a52 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 9 Apr 2026 08:01:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20recall=20=E6=9F=A5=E8=AF=A2=E6=89=80?= =?UTF-8?q?=E6=9C=89=E4=BC=9A=E8=AF=9D=E5=8E=86=E5=8F=B2=20+=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=80=97=E5=8F=B7=E5=88=86=E9=9A=94=E5=85=B3=E9=94=AE?= =?UTF-8?q?=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- openclaw_neo4j_demo.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/openclaw_neo4j_demo.py b/openclaw_neo4j_demo.py index 5615786..68b508c 100644 --- a/openclaw_neo4j_demo.py +++ b/openclaw_neo4j_demo.py @@ -163,27 +163,31 @@ class Neo4jGraph: def recall(self, query_intent: str, seed_entities: list = None, depth: int = 2, time_range: dict = None, session_filter: str = None) -> dict: with self.driver.session() as session: - keywords = [w for w in query_intent.lower().split() if len(w) > 1] + # 支持逗号分隔的多个关键词 + keywords = [w.strip() for w in query_intent.replace(',', ' ').split() if len(w.strip()) > 0] # 如果没有查询条件,返回空结果 if not keywords and not seed_entities: return {"entities": [], "relations": [], "message": "无查询关键词"} - params = {"session_id": CURRENT_SESSION_ID} + # 默认查询所有会话的历史(不只是当前会话) + # 只有明确指定 session_filter 才限制查询范围 + params = {} cond_parts = ["r.status = 'active'"] if session_filter: - cond_parts.append("r.session_id = $target_session") - params["target_session"] = session_filter + cond_parts.append("r.session_id = $session_id") + params["session_id"] = session_filter - # 搜索多个相关关键词(不只是单个) + # 搜索多个相关关键词 if keywords: keyword_conditions = [] for k in keywords: + k_lower = k.lower() # 搜索:实体名称、关系类型、目标实体 - keyword_conditions.append(f"toLower(e.name) CONTAINS '{k}'") - keyword_conditions.append(f"toLower(t.name) CONTAINS '{k}'") - keyword_conditions.append(f"toLower(r.type) CONTAINS '{k}'") + keyword_conditions.append(f"toLower(e.name) CONTAINS '{k_lower}'") + keyword_conditions.append(f"toLower(t.name) CONTAINS '{k_lower}'") + keyword_conditions.append(f"toLower(r.type) CONTAINS '{k_lower}'") cond_parts.append(f"({' OR '.join(keyword_conditions)})") if seed_entities: