기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
개인화된 Amazon OpenSearch 서비스 결과를 개인화를 적용하지 않은 결과와 비교
Amazon Personalize 검색 순위 플러그인은 Amazon Personalize의 순위와 순위를 기반으로 검색 결과를 재정렬합니다. OpenSearch 플러그인이 결과의 순위를 다시 매기는 방법은 파이프라인에서 personalized_search_ranking
응답 프로세서를 구성한 방식에 따라 달라집니다.
개인 맞춤을 사용하거나 사용하지 않고 쿼리를 실행하고 결과를 비교해 보면 결과의 순위가 매겨지는 방식을 이해할 수 있습니다. 다음 Python 코드를 사용하여 서로 다른 두 쿼리를 실행하고 결과를 두 JSON 파일에 출력할 수 있습니다. 첫 번째 메서드는 플러그인을 사용하여 결과의 순위를 다시 매기는 쿼리를 실행합니다. 두 번째 메서드는 개인 맞춤 없이 결과를 생성하는 메서드를 실행합니다.
import json import requests from requests_auth_aws_sigv4 import AWSSigV4 # Returns re-ranked OpenSearch results using the Amazon Personalize Search Ranking plugin. def get_personalized_results(pipeline_name): url = f'{domain}/{index}/_search/' auth = AWSSigV4('es') headers = {'Content-Type': 'application/json'} params = {"search_pipeline": pipeline_name} body = { "query": { "multi_match": { "query": "Toyota", "fields": ["BRAND"] } }, "ext": { "personalize_request_parameters": { "user_id": "1" } } } try: response = requests.post(url, auth=auth, params=params, json=body, headers=headers, verify=False) except Exception as e: return f"Error: {e}" return response.text # Returns OpenSearch results without personalization. def get_opensearch_results(): url = f'{domain}/{index}/_search/' auth = AWSSigV4('es') headers = {'Content-Type': 'application/json'} body = { "query": { "multi_match": { "query": "Toyota", "fields": ["BRAND"] } } } try: response = requests.post(url, auth=auth, json=body, headers=headers, verify=False) except Exception as e: return f"Error: {e}" return response.text def print_results(file_name, results): results_file = open(file_name, 'w') results_file.write(json.dumps(results, indent=4)) results_file.close() # specify domain endpoint domain = "
DOMAIN_ENDPOINT
" # specify the region where you created your Amazon Personalize resources and Amazon OpenSearch domain aws_region = "REGION
" # specify the name of the pipeline that uses the Amazon Personalize plugin pipeline_name = "PIPELINE_NAME
" # specify your Amazon OpenSearch index index = "INDEX
" # specify names for json files for comparison personalized_results_file = "personalized_results.json" opensearch_results_file = "opensearch_results.json" # get personalized results personalized_results = json.loads(get_personalized_results(pipeline_name)) # get OpenSearch results without personalization opensearch_results = json.loads(get_opensearch_results()) # print results to files print_results(personalized_results_file, personalized_results) print_results(opensearch_results_file, opensearch_results)