SearchClient 클래스
기존 Azure 검색 인덱스와 상호 작용하는 클라이언트입니다.
- 상속
-
azure.search.documents._headers_mixin.HeadersMixinSearchClient
생성자
SearchClient(endpoint: str, index_name: str, credential: AzureKeyCredential | TokenCredential, **kwargs: Any)
매개 변수
- api_version
- str
요청에 사용할 Search API 버전입니다.
- audience
- str
는 AAD(Azure Active Directory)를 사용하여 인증에 사용할 대상 그룹을 설정합니다. 공유 키를 사용할 때 대상 그룹은 고려되지 않습니다. 대상 그룹이 제공되지 않으면 퍼블릭 클라우드 대상 그룹이 가정됩니다.
예제
API 키를 사용하여 SearchClient 만들기
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
service_endpoint = os.environ["AZURE_SEARCH_SERVICE_ENDPOINT"]
index_name = os.environ["AZURE_SEARCH_INDEX_NAME"]
key = os.environ["AZURE_SEARCH_API_KEY"]
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
메서드
autocomplete |
Azure Search 인덱스에서 검색 자동 완성 결과를 가져옵니다. 인덱스 정의의 일부인 컬렉션입니다. :키워드(keyword) 모드: 자동 완성 모드를 지정합니다. 기본값은 'oneTerm'입니다. 사용 대상 포진을 가져오는 'twoTerms'와 자동 완성 용어를 생성하는 동안 현재 컨텍스트를 사용하는 'oneTermWithContext'. 가능한 값으로는 'oneTerm', 'twoTerms', 'oneTermWithContext'가 있습니다. |
close |
세션을 닫습니다 SearchClient . |
delete_documents |
Azure 검색 인덱스에서 문서 삭제 삭제는 인덱스에서 지정된 문서를 제거합니다. 키 필드 이외의 삭제 작업에서 지정한 모든 필드는 무시됩니다. 문서에서 개별 필드를 제거하려면 대신 merge_documents 사용하고 필드를 명시적으로 없음으로 설정합니다. 삭제 작업은 idempotent입니다. 즉, 문서 키가 인덱스에 없더라도 해당 키로 삭제 작업을 시도하면 200 상태 코드가 발생합니다. |
get_document |
Azure 검색 인덱스에서 해당 키로 문서를 검색합니다. |
get_document_count |
Azure 검색 인덱스의 문서 수를 반환합니다. |
index_documents |
일괄 처리로 수행할 문서 작업을 지정합니다. :발생 시킵니다 RequestEntityTooLargeError |
merge_documents |
의 문서를 Azure 검색 인덱스에서 기존 문서에 병합합니다. 병합에서는 기존 문서를 지정한 필드로 업데이트합니다. 문서가 없으면 병합하지 못합니다. 문서의 기존 필드는 병합에서 지정하는 필드로 바뀝니다. 이는 기본 형식 및 복합 형식의 컬렉션에도 적용됩니다. |
merge_or_upload_documents |
의 문서를 Azure 검색 인덱스에서 기존 문서에 병합하거나 아직 없는 경우 업로드합니다. 이 작업은 지정된 키가 있는 문서가 인덱스에 이미 있는 경우 merge_documents 것처럼 동작합니다. 문서가 없으면 새 문서가 있는 upload_documents 것처럼 동작합니다. |
search |
Azure 검색 인덱스에서 문서를 검색합니다. |
suggest |
Azure 검색 인덱스에서 검색 제안 결과를 가져옵니다. 문자가 100자를 넘지 않습니다. :p aram str suggester_name: 필수입니다. 인덱스 정의의 일부인 제안기 컬렉션에 지정된 제안기의 이름입니다. :키워드(keyword) str filter: 제안으로 간주되는 문서를 필터링하는 OData 식입니다. :키워드(keyword) bool use_fuzzy_matching: 제안에 유사 항목 일치를 사용할지 여부를 나타내는 값입니다. 쿼리를 만듭니다. 기본값은 false입니다. true로 설정하면 검색 텍스트에 대체되거나 누락된 문자가 있더라도 쿼리에서 용어를 찾습니다. 이는 일부 시나리오에서 더 나은 환경을 제공하지만 유사 제안 쿼리가 느리고 더 많은 리소스를 사용하므로 성능 비용이 발생합니다. |
upload_documents |
Azure 검색 인덱스로 문서를 업로드합니다. 업로드 작업은 문서가 새로 추가된 경우 삽입되고 문서가 있는 경우 업데이트/교체되는 "upsert"와 유사합니다. 업데이트 사례에서 모든 필드가 대체됩니다. |
autocomplete
Azure Search 인덱스에서 검색 자동 완성 결과를 가져옵니다.
인덱스 정의의 일부인 컬렉션입니다. :키워드(keyword) 모드: 자동 완성 모드를 지정합니다. 기본값은 'oneTerm'입니다. 사용
대상 포진을 가져오는 'twoTerms'와 자동 완성 용어를 생성하는 동안 현재 컨텍스트를 사용하는 'oneTermWithContext'. 가능한 값으로는 'oneTerm', 'twoTerms', 'oneTermWithContext'가 있습니다.
autocomplete(search_text: str, suggester_name: str, *, mode: str | AutocompleteMode | None = None, use_fuzzy_matching: bool | None = None, highlight_post_tag: str | None = None, highlight_pre_tag: str | None = None, minimum_coverage: float | None = None, search_fields: List[str] | None = None, top: int | None = None, **kwargs) -> List[Dict]
매개 변수
- filter
- str
자동 완성 결과에 대해 완료된 용어를 생성하는 데 사용되는 문서를 필터링하는 OData 식입니다.
- use_fuzzy_matching
- bool
자동 완성 쿼리에 유사 항목 일치를 사용할지 여부를 나타내는 값입니다. 기본값은 false입니다. true로 설정하면 검색 텍스트에 대체되거나 누락된 문자가 있더라도 쿼리에서 용어를 찾습니다. 이는 일부 시나리오에서 더 나은 환경을 제공하지만 유사 항목 자동 완성 쿼리가 느리고 더 많은 리소스를 사용하므로 성능 비용이 발생합니다.
- highlight_post_tag
- str
강조 표시에 추가되는 문자열 태그입니다. highlightPreTag를 사용하여 설정해야 합니다. 생략하면 적중 강조 표시가 비활성화됩니다.
- highlight_pre_tag
- str
강조 표시 앞에 추가되는 문자열 태그입니다. highlightPostTag를 사용하여 설정해야 합니다. 생략하면 적중 강조 표시가 비활성화됩니다.
- minimum_coverage
- float
쿼리가 성공으로 보고되려면 자동 완성 쿼리에서 다루어야 하는 인덱스의 백분율을 나타내는 0에서 100 사이의 숫자입니다. 이 매개 변수는 복제본(replica) 하나만 있는 서비스에서도 검색 가용성을 보장하는 데 유용할 수 있습니다. 기본값은 80입니다.
- top
- int
검색할 자동 완성 용어 수입니다. 1에서 100 사이의 값이어야 합니다. 기본값은 5입니다.
반환 형식
예제
자동 완성을 가져옵니다.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
results = search_client.autocomplete(search_text="bo", suggester_name="sg")
print("Autocomplete suggestions for 'bo'")
for result in results:
print(" Completion: {}".format(result["text"]))
close
세션을 닫습니다 SearchClient .
close() -> None
delete_documents
Azure 검색 인덱스에서 문서 삭제
삭제는 인덱스에서 지정된 문서를 제거합니다. 키 필드 이외의 삭제 작업에서 지정한 모든 필드는 무시됩니다. 문서에서 개별 필드를 제거하려면 대신 merge_documents 사용하고 필드를 명시적으로 없음으로 설정합니다.
삭제 작업은 idempotent입니다. 즉, 문서 키가 인덱스에 없더라도 해당 키로 삭제 작업을 시도하면 200 상태 코드가 발생합니다.
delete_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
매개 변수
반환
IndexingResult 목록
반환 형식
예제
인덱스로 기존 문서 삭제
result = search_client.delete_documents(documents=[{"hotelId": "1000"}])
print("Delete new document succeeded: {}".format(result[0].succeeded))
get_document
Azure 검색 인덱스에서 해당 키로 문서를 검색합니다.
get_document(key: str, selected_fields: List[str] | None = None, **kwargs: Any) -> Dict
매개 변수
반환
Azure 검색 인덱스로 저장된 문서
반환 형식
예제
검색 인덱스에서 특정 문서를 가져옵니다.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
result = search_client.get_document(key="23")
print("Details for hotel '23' are:")
print(" Name: {}".format(result["hotelName"]))
print(" Rating: {}".format(result["rating"]))
print(" Category: {}".format(result["category"]))
get_document_count
index_documents
일괄 처리로 수행할 문서 작업을 지정합니다.
:발생 시킵니다 RequestEntityTooLargeError
index_documents(batch: IndexDocumentsBatch, **kwargs: Any) -> List[IndexingResult]
매개 변수
반환
IndexingResult 목록
반환 형식
merge_documents
의 문서를 Azure 검색 인덱스에서 기존 문서에 병합합니다.
병합에서는 기존 문서를 지정한 필드로 업데이트합니다. 문서가 없으면 병합하지 못합니다. 문서의 기존 필드는 병합에서 지정하는 필드로 바뀝니다. 이는 기본 형식 및 복합 형식의 컬렉션에도 적용됩니다.
merge_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
매개 변수
반환
IndexingResult 목록
반환 형식
예제
필드를 기존 문서에 인덱스로 병합
result = search_client.merge_documents(documents=[{"hotelId": "1000", "rating": 4.5}])
print("Merge into new document succeeded: {}".format(result[0].succeeded))
merge_or_upload_documents
의 문서를 Azure 검색 인덱스에서 기존 문서에 병합하거나 아직 없는 경우 업로드합니다.
이 작업은 지정된 키가 있는 문서가 인덱스에 이미 있는 경우 merge_documents 것처럼 동작합니다. 문서가 없으면 새 문서가 있는 upload_documents 것처럼 동작합니다.
merge_or_upload_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
매개 변수
반환
IndexingResult 목록
반환 형식
search
Azure 검색 인덱스에서 문서를 검색합니다.
search(search_text: str | None = None, *, include_total_count: bool | None = None, facets: List[str] | None = None, filter: str | None = None, highlight_fields: str | None = None, highlight_post_tag: str | None = None, highlight_pre_tag: str | None = None, minimum_coverage: float | None = None, order_by: List[str] | None = None, query_type: str | QueryType | None = None, scoring_parameters: List[str] | None = None, scoring_profile: str | None = None, search_fields: List[str] | None = None, search_mode: str | SearchMode | None = None, query_answer: str | QueryAnswerType | None = None, query_answer_count: int | None = None, query_answer_threshold: float | None = None, query_caption: str | QueryCaptionType | None = None, query_caption_highlight_enabled: bool | None = None, semantic_configuration_name: str | None = None, select: List[str] | None = None, skip: int | None = None, top: int | None = None, scoring_statistics: str | ScoringStatistics | None = None, session_id: str | None = None, vector_queries: List[VectorQuery] | None = None, vector_filter_mode: str | VectorFilterMode | None = None, semantic_error_mode: str | SemanticErrorMode | None = None, semantic_max_wait_in_milliseconds: int | None = None, **kwargs: Any) -> SearchItemPaged[Dict]
매개 변수
- include_total_count
- bool
결과의 총 수를 가져올지 여부를 지정하는 값입니다. 기본값은 false입니다. 이 값을 true로 설정하면 성능에 영향을 미칠 수 있습니다. 반환되는 개수는 근사값입니다.
- filter
- str
검색 쿼리에 적용할 OData $filter 식입니다.
- highlight_fields
- str
적중 하이라이트에 사용할 필드 이름의 쉼표로 구분된 목록입니다. 검색 가능한 필드만 적중 항목 강조 표시에 사용할 수 있습니다.
- highlight_post_tag
- str
강조 표시에 추가되는 문자열 태그입니다. highlightPreTag를 사용하여 설정해야 합니다. 기본값은 입니다.
- highlight_pre_tag
- str
강조 표시 앞에 추가되는 문자열 태그입니다. highlightPostTag를 사용하여 설정해야 합니다. 기본값은 입니다.
- minimum_coverage
- float
쿼리가 성공으로 보고되려면 검색 쿼리에서 다루어야 하는 인덱스의 백분율을 나타내는 0에서 100 사이의 숫자입니다. 이 매개 변수는 복제본(replica) 하나만 있는 서비스에서도 검색 가용성을 보장하는 데 유용할 수 있습니다. 기본값은 100입니다.
결과를 정렬할 OData $orderby 식 목록입니다. 각 식은 field name 또는 geo.distance() 또는 search.score() 함수에 대한 호출일 수 있습니다. 각 식 뒤에 asc를 추가하여 오름차순을 나타내고 내림차순을 나타내도록 desc할 수 있습니다. 기본값은 오름차순입니다. 동률은 문서의 일치 점수로 구분됩니다. OrderBy가 지정되지 않은 경우 기본 정렬 순서는 문서 일치 점수별로 내림차순입니다. 최대 32개의 $orderby 절이 있을 수 있습니다.
검색 쿼리의 구문을 지정하는 값입니다. 기본값은 'simple'입니다. 쿼리에서 Lucene 쿼리 구문을 사용하는 경우 'full'을 사용합니다. 가능한 값은 'simple', 'full', "semantic"입니다.
name-values 형식을 사용하여 점수 매기기 함수(예: referencePointParameter)에 사용할 매개 변수 값 목록입니다. 예를 들어 점수 매기기 프로필이 'mylocation'이라는 매개 변수를 사용하여 함수를 정의하는 경우 매개 변수 문자열은 따옴표 없이 "mylocation–122.2,44.8"입니다.
- scoring_profile
- str
결과를 정렬하기 위해 일치하는 문서의 일치 점수를 계산하는 점수 매기기 프로필의 이름입니다.
전체 텍스트 검색을 scope 필드 이름 목록입니다. 전체 Lucene 쿼리에서 필드 검색(fieldName:searchExpression)을 사용하는 경우 필드가 있는 각 검색 식의 필드 이름이 이 매개 변수에 나열된 필드 이름보다 우선합니다.
- search_mode
- str 또는 SearchMode
문서를 일치 항목으로 계산하기 위해 검색어 중 하나 또는 전부를 일치시켜야 하는지 여부를 지정하는 값입니다. 가능한 값은 'any', 'all'입니다.
- query_answer
- str 또는 QueryAnswerType
이 매개 변수는 쿼리 형식이 '의미 체계'인 경우에만 유효합니다. 설정된 경우 쿼리는 가장 높은 순위의 문서의 주요 구절에서 추출된 답변을 반환합니다. 가능한 값은 "none", "extractive"입니다.
- query_answer_count
- int
이 매개 변수는 쿼리 형식이 '의미 체계'이고 쿼리 답변이 '추출'인 경우에만 유효합니다. 반환된 답변 수를 구성합니다. 기본 개수는 1입니다.
- query_answer_threshold
- float
이 매개 변수는 쿼리 형식이 '의미 체계'이고 쿼리 답변이 '추출'인 경우에만 유효합니다. 신뢰도 임계값 수를 구성합니다. 기본값은 0.7입니다.
- query_caption
- str 또는 QueryCaptionType
이 매개 변수는 쿼리 형식이 '의미 체계'인 경우에만 유효합니다. 설정된 경우 쿼리는 가장 높은 순위의 문서의 주요 구절에서 추출된 캡션을 반환합니다. 기본값은 'None'입니다. 가능한 값은 "none", "extractive"입니다.
- query_caption_highlight_enabled
- bool
이 매개 변수는 쿼리 캡션 '추출'으로 설정된 경우 쿼리 형식이 '의미 체계'인 경우에만 유효합니다. 강조 표시를 사용할지 여부를 결정합니다. 기본값은 'true'입니다.
- semantic_configuration_name
- str
형식 의미 체계의 쿼리에 대한 문서를 처리할 때 사용할 의미 체계 구성의 이름입니다.
- skip
- int
건너뛸 검색 결과의 수입니다. 이 값은 100,000보다 클 수 없습니다. 문서를 순서대로 검사해야 하지만 이 제한으로 인해 $skip 사용할 수 없는 경우 완전히 정렬된 키에 $orderby 사용하고 범위 쿼리를 사용하여 $filter 것이 좋습니다.
- top
- int
검색할 검색 결과의 수입니다. $skip 함께 사용하여 검색 결과의 클라이언트 쪽 페이징을 구현할 수 있습니다. 서버 쪽 페이징으로 인해 결과가 잘리는 경우 응답에는 결과의 다음 페이지에 대한 다른 검색 요청을 발급하는 데 사용할 수 있는 연속 토큰이 포함됩니다.
- scoring_statistics
- str 또는 ScoringStatistics
더 일관된 채점을 위해 점수 매기기 통계(예: 문서 빈도)를 전역적으로 계산할지, 아니면 대기 시간을 낮추기 위해 로컬로 계산할지를 지정하는 값입니다. 기본값은 'local'입니다. 채점하기 전에 'global'을 사용하여 점수 매기기 통계를 전역적으로 집계합니다. 전역 점수 매기기 통계를 사용하면 검색 쿼리의 대기 시간을 늘릴 수 있습니다. 가능한 값은 "local", "global"입니다.
- session_id
- str
더 일관된 결과를 얻는 데 도움이 될 수 있는 고정 세션을 만드는 데 사용할 값입니다. 동일한 sessionId를 사용하는 한 동일한 복제본(replica) 집합을 대상으로 하여 최선의 노력을 기울입니다. 동일한 sessionID 값을 반복적으로 다시 사용하면 복제본 간에 요청의 부하 분산을 방해하고 검색 서비스의 성능에 부정적인 영향을 줄 수 있습니다. sessionId로 사용된 값은 '_' 문자로 시작할 수 없습니다.
- semantic_error_mode
- str 또는 SemanticErrorMode
사용자가 의미 체계 호출이 완전히 실패할지(기본/현재 동작) 또는 부분 결과를 반환할지 선택할 수 있습니다. 알려진 값은 "partial" 및 "fail"입니다.
- semantic_max_wait_in_milliseconds
- int
사용자가 요청이 실패하기 전에 의미 체계 보강이 처리를 완료하는 데 걸리는 시간에 상한을 설정할 수 있습니다.
- vector_queries
- list[VectorQuery]
벡터 및 하이브리드 검색 쿼리에 대한 쿼리 매개 변수입니다.
- vector_filter_mode
- str 또는 VectorFilterMode
벡터 검색이 수행되기 전이나 후에 필터가 적용되는지 여부를 결정합니다. 기본값은 'preFilter'입니다. 알려진 값은 "postFilter" 및 "preFilter"입니다.
반환 형식
예제
검색 결과 패싯을 가져옵니다.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
results = search_client.search(search_text="WiFi", facets=["category,count:3", "parkingIncluded"])
facets: Dict[str, List[str]] = cast(Dict[str, List[str]], results.get_facets())
print("Catgory facet counts for hotels:")
for facet in facets["category"]:
print(" {}".format(facet))
suggest
Azure 검색 인덱스에서 검색 제안 결과를 가져옵니다.
문자가 100자를 넘지 않습니다. :p aram str suggester_name: 필수입니다. 인덱스 정의의 일부인 제안기 컬렉션에 지정된 제안기의 이름입니다. :키워드(keyword) str filter: 제안으로 간주되는 문서를 필터링하는 OData 식입니다. :키워드(keyword) bool use_fuzzy_matching: 제안에 유사 항목 일치를 사용할지 여부를 나타내는 값입니다.
쿼리를 만듭니다. 기본값은 false입니다. true로 설정하면 검색 텍스트에 대체되거나 누락된 문자가 있더라도 쿼리에서 용어를 찾습니다. 이는 일부 시나리오에서 더 나은 환경을 제공하지만 유사 제안 쿼리가 느리고 더 많은 리소스를 사용하므로 성능 비용이 발생합니다.
suggest(search_text: str, suggester_name: str, *, use_fuzzy_matching: bool | None = None, highlight_post_tag: str | None = None, highlight_pre_tag: str | None = None, minimum_coverage: float | None = None, order_by: List[str] | None = None, search_fields: List[str] | None = None, select: List[str] | None = None, top: int | None = None, **kwargs) -> List[Dict]
매개 변수
- highlight_post_tag
- str
강조 표시에 추가되는 문자열 태그입니다. highlightPreTag를 사용하여 설정해야 합니다. 생략하면 추천 항목의 적중 강조 표시가 비활성화됩니다.
- highlight_pre_tag
- str
강조 표시 앞에 추가되는 문자열 태그입니다. highlightPostTag를 사용하여 설정해야 합니다. 생략하면 추천 항목의 적중 강조 표시가 비활성화됩니다.
- minimum_coverage
- float
쿼리가 성공으로 보고되려면 제안 쿼리에서 다루어야 하는 인덱스의 백분율을 나타내는 0에서 100 사이의 숫자입니다. 이 매개 변수는 복제본(replica) 하나만 있는 서비스에서도 검색 가용성을 보장하는 데 유용할 수 있습니다. 기본값은 80입니다.
결과를 정렬할 OData $orderby 식 목록입니다. 각 식은 field name 또는 geo.distance() 또는 search.score() 함수에 대한 호출일 수 있습니다. 각 식 뒤에 asc를 추가하여 오름차순을 나타내거나 내림차순을 나타내는 desc를 사용할 수 있습니다. 기본값은 오름차순입니다. 동률은 문서의 일치 점수로 구분됩니다. $orderby 지정하지 않으면 기본 정렬 순서가 문서 일치 점수별로 내림차순입니다. 최대 32개의 $orderby 절이 있을 수 있습니다.
- top
- int
검색할 제안 수입니다. 값은 1에서 100 사이의 숫자여야 합니다. 기본값은 5입니다.
반환
문서 목록입니다.
반환 형식
예제
검색 제안을 가져옵니다.
from azure.core.credentials import AzureKeyCredential
from azure.search.documents import SearchClient
search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key))
results = search_client.suggest(search_text="coffee", suggester_name="sg")
print("Search suggestions for 'coffee'")
for result in results:
hotel = search_client.get_document(key=result["hotelId"])
print(" Text: {} for Hotel: {}".format(repr(result["text"]), hotel["hotelName"]))
upload_documents
Azure 검색 인덱스로 문서를 업로드합니다.
업로드 작업은 문서가 새로 추가된 경우 삽입되고 문서가 있는 경우 업데이트/교체되는 "upsert"와 유사합니다. 업데이트 사례에서 모든 필드가 대체됩니다.
upload_documents(documents: List[Dict], **kwargs: Any) -> List[IndexingResult]
매개 변수
반환
IndexingResult 목록
반환 형식
예제
인덱스로 새 문서 업로드
DOCUMENT = {
"category": "Hotel",
"hotelId": "1000",
"rating": 4.0,
"rooms": [],
"hotelName": "Azure Inn",
}
result = search_client.upload_documents(documents=[DOCUMENT])
print("Upload of new document succeeded: {}".format(result[0].succeeded))
Azure SDK for Python