From 53964c60c105b39a9e5c58773ed35a4eda685bc7 Mon Sep 17 00:00:00 2001 From: "liuchangsheng@wisdomidata.com" Date: Fri, 13 Jun 2025 14:44:56 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90Dify=E3=80=91=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=85=A8=E6=96=87=E6=A3=80=E7=B4=A2=E7=9A=84=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?-=20=20=E6=9F=A5=E8=AF=A2=E6=96=87=E4=BB=B6ID=20-=20=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../console/workspace/account_ext.py | 6 ++++-- api/services/ext/dataset_ext_service.py | 18 ++++++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/api/controllers/console/workspace/account_ext.py b/api/controllers/console/workspace/account_ext.py index 8e2e811524..42c922621b 100644 --- a/api/controllers/console/workspace/account_ext.py +++ b/api/controllers/console/workspace/account_ext.py @@ -95,16 +95,18 @@ class FullSearchTextApi(Resource): help='List of names' ) parser.add_argument("query_text", type=str, required=True, location="json") + parser.add_argument("file_ids", type=str, required=True, location="json") args = parser.parse_args() dataset_names = args.dataset_names query_text = args.query_text - + file_ids = args.file_ids current_user = flask_login.current_user tenant = current_user.current_tenant search_datas = DocumentExtService.get_full_search_data( dataset_names=dataset_names, tenant_id=tenant.id, - query_text=query_text + query_text=query_text, + file_ids=file_ids ) return search_datas diff --git a/api/services/ext/dataset_ext_service.py b/api/services/ext/dataset_ext_service.py index 3ac217e685..148b98bb8f 100644 --- a/api/services/ext/dataset_ext_service.py +++ b/api/services/ext/dataset_ext_service.py @@ -202,7 +202,13 @@ class DocumentExtService: return next_segment - def get_full_search_data(dataset_names: list[str], tenant_id : str, query_text: str): + def get_full_search_data(dataset_names: list[str], + tenant_id : str, + query_text: str, + file_ids: str) -> list[dict]: + + if not file_ids: + return [] datasets = db.session.query(Dataset).filter(Dataset.name.in_(dataset_names),Dataset.tenant_id == tenant_id).all() dataset_ids = [dataset.id for dataset in datasets] @@ -214,11 +220,12 @@ class DocumentExtService: search_data = { "title": segment.document_name, "content": segment.segment_content, - "doc_metadata": segment.metadata, + "doc_metadata": segment.doc_metadata, "query": query_text } search_datas.append(search_data) + search_datas = DocumentExtService.filter_by_file_ids(search_datas=search_datas, file_ids=file_ids) return search_datas def get_full_search_segments(dataset_ids: list[str], query_text: str): @@ -271,3 +278,10 @@ class DocumentExtService: else: fetch_segments.append(segment_list[1]) return fetch_segments + + def filter_by_file_ids(search_datas: list[dict], file_ids: str) -> list[dict]: + file_id_list = file_ids.split(",") + return [ + item for item in search_datas + if item.get("doc_metadata", {}).get("file_id") in file_ids + ]