|
@@ -46,6 +46,23 @@ def _load_graph_full() -> Dict[str, Any]:
|
|
|
return _graph_full_cache
|
|
return _graph_full_cache
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+def _remove_post_ids_from_edges(edges: Dict[str, Any]) -> Dict[str, Any]:
|
|
|
|
|
+ """移除 edges 中的 _post_ids 字段"""
|
|
|
|
|
+ if not edges:
|
|
|
|
|
+ return edges
|
|
|
|
|
+
|
|
|
|
|
+ cleaned_edges = {}
|
|
|
|
|
+ for edge_name, edge_data in edges.items():
|
|
|
|
|
+ if isinstance(edge_data, dict):
|
|
|
|
|
+ # 移除 _post_ids 字段
|
|
|
|
|
+ cleaned_data = {k: v for k, v in edge_data.items() if k != "_post_ids"}
|
|
|
|
|
+ cleaned_edges[edge_name] = cleaned_data
|
|
|
|
|
+ else:
|
|
|
|
|
+ cleaned_edges[edge_name] = edge_data
|
|
|
|
|
+
|
|
|
|
|
+ return cleaned_edges
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
def _search_points_by_element_from_full(
|
|
def _search_points_by_element_from_full(
|
|
|
element_value: str,
|
|
element_value: str,
|
|
|
element_type: str,
|
|
element_type: str,
|
|
@@ -60,7 +77,7 @@ def _search_points_by_element_from_full(
|
|
|
top_k: 返回前 K 个点(按频率排序)
|
|
top_k: 返回前 K 个点(按频率排序)
|
|
|
|
|
|
|
|
Returns:
|
|
Returns:
|
|
|
- 包含匹配点完整信息的字典(包括 edges)
|
|
|
|
|
|
|
+ 包含匹配点完整信息的字典(包括 edges,已移除 _post_ids)
|
|
|
"""
|
|
"""
|
|
|
graph = _load_graph_full()
|
|
graph = _load_graph_full()
|
|
|
matched_points = []
|
|
matched_points = []
|
|
@@ -73,16 +90,19 @@ def _search_points_by_element_from_full(
|
|
|
|
|
|
|
|
# 检查:元素值在 elements 中 AND dimension 匹配 element_type
|
|
# 检查:元素值在 elements 中 AND dimension 匹配 element_type
|
|
|
if element_value in elements and dimension == element_type:
|
|
if element_value in elements and dimension == element_type:
|
|
|
|
|
+ # 移除 edges 中的 _post_ids
|
|
|
|
|
+ cleaned_edges = _remove_post_ids_from_edges(point_data.get("edges", {}))
|
|
|
|
|
+
|
|
|
|
|
+ # 返回结构与 search_point_by_path_from_full_all_levels 保持一致
|
|
|
point_info = {
|
|
point_info = {
|
|
|
"point": point_name,
|
|
"point": point_name,
|
|
|
- "element_frequency": elements[element_value],
|
|
|
|
|
"point_type": meta.get("point_type"),
|
|
"point_type": meta.get("point_type"),
|
|
|
"dimension": dimension,
|
|
"dimension": dimension,
|
|
|
- "path": meta.get("path"),
|
|
|
|
|
|
|
+ "point_path": meta.get("path"),
|
|
|
"frequency_in_posts": meta.get("frequency_in_posts", 0),
|
|
"frequency_in_posts": meta.get("frequency_in_posts", 0),
|
|
|
- "edge_count": len(point_data.get("edges", {})),
|
|
|
|
|
- "edges": point_data.get("edges", {}),
|
|
|
|
|
- "all_elements": elements
|
|
|
|
|
|
|
+ "elements": elements,
|
|
|
|
|
+ "edge_count": len(cleaned_edges),
|
|
|
|
|
+ "edges": cleaned_edges
|
|
|
}
|
|
}
|
|
|
matched_points.append(point_info)
|
|
matched_points.append(point_info)
|
|
|
|
|
|
|
@@ -116,7 +136,7 @@ def _search_point_by_path_from_full(path: str) -> Dict[str, Any]:
|
|
|
path: 点的完整路径,如 "关键点_形式_架构>逻辑>逻辑架构>组织逻辑>框架规划>结构设计"
|
|
path: 点的完整路径,如 "关键点_形式_架构>逻辑>逻辑架构>组织逻辑>框架规划>结构设计"
|
|
|
|
|
|
|
|
Returns:
|
|
Returns:
|
|
|
- 包含该点完整信息的字典(包括 edges)
|
|
|
|
|
|
|
+ 包含该点完整信息的字典(包括 edges,已移除 _post_ids)
|
|
|
"""
|
|
"""
|
|
|
graph = _load_graph_full()
|
|
graph = _load_graph_full()
|
|
|
|
|
|
|
@@ -130,6 +150,9 @@ def _search_point_by_path_from_full(path: str) -> Dict[str, Any]:
|
|
|
point_data = graph[path]
|
|
point_data = graph[path]
|
|
|
meta = point_data.get("meta", {})
|
|
meta = point_data.get("meta", {})
|
|
|
|
|
|
|
|
|
|
+ # 移除 edges 中的 _post_ids
|
|
|
|
|
+ cleaned_edges = _remove_post_ids_from_edges(point_data.get("edges", {}))
|
|
|
|
|
+
|
|
|
return {
|
|
return {
|
|
|
"found": True,
|
|
"found": True,
|
|
|
"path": path,
|
|
"path": path,
|
|
@@ -138,8 +161,8 @@ def _search_point_by_path_from_full(path: str) -> Dict[str, Any]:
|
|
|
"point_path": meta.get("path"),
|
|
"point_path": meta.get("path"),
|
|
|
"frequency_in_posts": meta.get("frequency_in_posts"),
|
|
"frequency_in_posts": meta.get("frequency_in_posts"),
|
|
|
"elements": meta.get("elements", {}),
|
|
"elements": meta.get("elements", {}),
|
|
|
- "edge_count": len(point_data.get("edges", {})),
|
|
|
|
|
- "edges": point_data.get("edges", {})
|
|
|
|
|
|
|
+ "edge_count": len(cleaned_edges),
|
|
|
|
|
+ "edges": cleaned_edges
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|