movie_search/final_ver/backend/search_document.py (28 lines of code) (raw):

from google.cloud import discoveryengine_v1alpha as discoveryengine from google.api_core.client_options import ClientOptions from utils import PROJECT_ID, DATASTORE_ID, LOCATION, running_on_cloudrun def search_documents_by_query(query: str, show_summary: bool = True) -> discoveryengine.SearchResponse: """Discovery Engine でドキュメントを検索する Args: query: 検索クエリ show_summary: サマリーを表示するかどうか Returns: Discovery Engine の検索レスポンス """ client = discoveryengine.SearchServiceClient( client_options=ClientOptions(api_endpoint=f'{LOCATION}-discoveryengine.googleapis.com'), ) request = discoveryengine.SearchRequest( serving_config=client.serving_config_path( project=PROJECT_ID, location=LOCATION, data_store=DATASTORE_ID, serving_config='default_search:search', ), content_search_spec=discoveryengine.SearchRequest.ContentSearchSpec( search_result_mode='DOCUMENTS', summary_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec( summary_result_count=3, include_citations=True, model_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec.ModelSpec( version='stable' ) ), ), query=query, ) response = client.search(request) # if show_summary: # print(response.summary.summary_text) # for c, item in enumerate(response.results): # print(f'[{c+1}]: {item.document.derived_struct_data["link"]}') return response # テスト用 # result = search_documents_by_query('AI') # print(result)