Просмотр исходного кода

pref: optimize add hit count query performance when dataset hit (#2436)

takatost 1 год назад
Родитель
Сommit
e1045f01c6
1 измененных файлов с 8 добавлено и 4 удалено
  1. 8 4
      api/core/callback_handler/index_tool_callback_handler.py

+ 8 - 4
api/core/callback_handler/index_tool_callback_handler.py

@@ -42,12 +42,16 @@ class DatasetIndexToolCallbackHandler:
     def on_tool_end(self, documents: list[Document]) -> None:
         """Handle tool end."""
         for document in documents:
-            doc_id = document.metadata['doc_id']
+            query = db.session.query(DocumentSegment).filter(
+                DocumentSegment.index_node_id == document.metadata['doc_id']
+            )
+
+            # if 'dataset_id' in document.metadata:
+            if 'dataset_id' in document.metadata:
+                query = query.filter(DocumentSegment.dataset_id == document.metadata['dataset_id'])
 
             # add hit count to document segment
-            db.session.query(DocumentSegment).filter(
-                DocumentSegment.index_node_id == doc_id
-            ).update(
+            query.update(
                 {DocumentSegment.hit_count: DocumentSegment.hit_count + 1},
                 synchronize_session=False
             )