@@ -81,16 +81,16 @@ def process_chunk_data(chunk_data):
81
81
except Exception as e :
82
82
logging .error (f"chunkid_entities module: An error occurred while extracting the Chunk text from records: { e } " )
83
83
84
- def process_chunkids (driver , chunk_ids ):
84
+ def process_chunkids (driver , chunk_ids , entities ):
85
85
"""
86
86
Processes chunk IDs to retrieve chunk data.
87
87
"""
88
88
try :
89
89
logging .info (f"Starting graph query process for chunk ids: { chunk_ids } " )
90
- chunk_ids_list = chunk_ids .split ("," )
91
-
92
- records , summary , keys = driver .execute_query (CHUNK_QUERY , chunksIds = chunk_ids_list )
90
+ records , summary , keys = driver .execute_query (CHUNK_QUERY , chunksIds = chunk_ids ,entityIds = entities ["entityids" ], relationshipIds = entities ["relationshipids" ])
93
91
result = process_records (records )
92
+ result ["nodes" ].extend (records [0 ]["nodes" ])
93
+ result ["nodes" ] = remove_duplicate_nodes (result ["nodes" ])
94
94
logging .info (f"Nodes and relationships are processed" )
95
95
96
96
result ["chunk_data" ] = process_chunk_data (records )
@@ -118,79 +118,95 @@ def remove_duplicate_nodes(nodes,property="element_id"):
118
118
119
119
return unique_nodes
120
120
121
- def process_entityids (driver , chunk_ids ):
121
+ def process_entityids (driver , entity_ids ):
122
122
"""
123
123
Processes entity IDs to retrieve local community data.
124
124
"""
125
125
try :
126
- logging .info (f"Starting graph query process for entity ids: { chunk_ids } " )
127
- entity_ids_list = chunk_ids .split ("," )
126
+ logging .info (f"Starting graph query process for entity ids: { entity_ids } " )
128
127
query_body = LOCAL_COMMUNITY_SEARCH_QUERY .format (
129
128
topChunks = LOCAL_COMMUNITY_TOP_CHUNKS ,
130
129
topCommunities = LOCAL_COMMUNITY_TOP_COMMUNITIES ,
131
130
topOutsideRels = LOCAL_COMMUNITY_TOP_OUTSIDE_RELS
132
131
)
133
132
query = LOCAL_COMMUNITY_DETAILS_QUERY_PREFIX + query_body + LOCAL_COMMUNITY_DETAILS_QUERY_SUFFIX
134
133
135
- records , summary , keys = driver .execute_query (query , entityIds = entity_ids_list )
134
+ records , summary , keys = driver .execute_query (query , entityIds = entity_ids )
136
135
137
136
result = process_records (records )
138
137
if records :
139
138
result ["nodes" ].extend (records [0 ]["nodes" ])
140
139
result ["nodes" ] = remove_duplicate_nodes (result ["nodes" ])
140
+
141
141
logging .info (f"Nodes and relationships are processed" )
142
+
142
143
result ["chunk_data" ] = records [0 ]["chunks" ]
143
144
result ["community_data" ] = records [0 ]["communities" ]
144
145
else :
145
146
result ["chunk_data" ] = list ()
146
147
result ["community_data" ] = list ()
147
- logging .info (f"Query process completed successfully for chunk ids: { chunk_ids } " )
148
+ logging .info (f"Query process completed successfully for chunk ids: { entity_ids } " )
148
149
return result
149
150
except Exception as e :
150
- logging .error (f"chunkid_entities module: Error processing entity ids: { chunk_ids } . Error: { e } " )
151
+ logging .error (f"chunkid_entities module: Error processing entity ids: { entity_ids } . Error: { e } " )
151
152
raise
152
153
153
- def get_entities_from_chunkids (uri , username , password , database ,chunk_ids ,is_entity = False ):
154
- """
155
- Retrieve and process nodes and relationships from a graph database given a list of chunk IDs.
154
+ def process_communityids (driver , community_ids ):
155
+ """Processes community IDs to retrieve community data."""
156
+ try :
157
+ logging .info (f"Starting graph query process for community ids: { community_ids } " )
158
+ query = GLOBAL_COMMUNITY_DETAILS_QUERY
159
+ records , summary , keys = driver .execute_query (query , communityids = community_ids )
160
+
161
+ result = {"nodes" : [], "relationships" : [], "chunk_data" : []}
162
+ result ["community_data" ] = records [0 ]["communities" ] if records else []
156
163
157
- Parameters:
158
- uri (str): The URI of the graph database.
159
- username (str): The username for the database authentication.
160
- password (str): The password for the database authentication.
161
- chunk_ids (str): A comma-separated string of chunk IDs.
164
+ logging . info ( f"Query process completed successfully for community ids: { community_ids } " )
165
+ return result
166
+ except Exception as e :
167
+ logging . error ( f"chunkid_entities module: Error processing community ids: { community_ids } . Error: { e } " )
168
+ raise
162
169
163
- Returns:
164
- dict: A dictionary with 'nodes' and 'relationships' keys containing processed data, or an error message.
165
- """
170
+ def get_entities_from_chunkids (uri , username , password , database ,nodedetails ,entities ,mode ):
166
171
try :
167
172
168
173
driver = get_graphDB_driver (uri , username , password ,database )
169
- if not is_entity :
170
- if chunk_ids :
171
- logging .info (f"chunkid_entities module: Starting for chunk ids : { chunk_ids } " )
172
- result = process_chunkids (driver ,chunk_ids )
174
+ default_response = {"nodes" : list (),"relationships" : list (),"chunk_data" : list (),"community_data" : list (),}
175
+
176
+ nodedetails = json .loads (nodedetails )
177
+ entities = json .loads (entities )
178
+
179
+ if mode == CHAT_GLOBAL_VECTOR_FULLTEXT_MODE :
180
+
181
+ if "communitydetails" in nodedetails and nodedetails ["communitydetails" ]:
182
+ community_ids = [item ["id" ] for item in nodedetails ["communitydetails" ]]
183
+ logging .info (f"chunkid_entities module: Starting for community ids: { community_ids } " )
184
+ return process_communityids (driver , community_ids )
185
+ else :
186
+ logging .info ("chunkid_entities module: No community ids are passed" )
187
+ return default_response
188
+
189
+ elif mode == CHAT_ENTITY_VECTOR_MODE :
190
+
191
+ if "entitydetails" in nodedetails and nodedetails ["entitydetails" ]:
192
+ entity_ids = [item ["id" ] for item in nodedetails ["entitydetails" ]]
193
+ logging .info (f"chunkid_entities module: Starting for entity ids: { entity_ids } " )
194
+ return process_entityids (driver , entity_ids )
173
195
else :
174
- logging .info (f"chunkid_entities module: No chunk ids are passed" )
175
- result = {
176
- "nodes" : [],
177
- "relationships" : [],
178
- "chunk_data" :[]
179
- }
180
- return result
181
- if chunk_ids :
182
- result = process_entityids (driver ,chunk_ids )
183
- logging .info (f"chunkid_entities module: Starting for entity ids : { chunk_ids } " )
196
+ logging .info ("chunkid_entities module: No entity ids are passed" )
197
+ return default_response
198
+
184
199
else :
185
- logging . info ( f"chunkid_entities module: No entity ids are passed" )
186
- result = {
187
- "nodes" : [],
188
- "relationships" : [],
189
- "chunk_data" :[],
190
- "community_data" :[]
191
- }
192
- return result
200
+
201
+ if "chunkdetails" in nodedetails and nodedetails [ "chunkdetails" ]:
202
+ chunk_ids = [ item [ "id" ] for item in nodedetails [ "chunkdetails" ]]
203
+ logging . info ( f"chunkid_entities module: Starting for chunk ids: { chunk_ids } " )
204
+ return process_chunkids ( driver , chunk_ids , entities )
205
+ else :
206
+ logging . info ( "chunkid_entities module: No chunk ids are passed" )
207
+ return default_response
193
208
194
209
except Exception as e :
195
210
logging .error (f"chunkid_entities module: An error occurred in get_entities_from_chunkids. Error: { str (e )} " )
196
- raise Exception (f"chunkid_entities module: An error occurred in get_entities_from_chunkids. Please check the logs for more details." ) from e
211
+ raise Exception (f"chunkid_entities module: An error occurred in get_entities_from_chunkids. Please check the logs for more details." ) from e
212
+
0 commit comments