클래스 Index
는 문서의 색인 생성, 삭제, 검색을 허용하는 색인을 나타냅니다.
Index
은 google.appengine.api.search
모듈에 정의됩니다.
소개
Index
클래스는 색인을 구성하는 인수와 색인에 있는 문서(또는 반복 가능한 문서 컬렉션)를 추가, 나열, 검색, 삭제할 수 있는 함수를 제공합니다. 색인의 이름 및 네임스페이스를 포함하는 Index
클래스에 인수를 사용해 색인을 구성합니다.
다음 코드는 문서를 색인에 대입한 후 쿼리와 일치하는 문서를 검색하는 방법을 보여줍니다.
# Get the index. index = search.Index(name='index-name') # Create a document. doc = search.Document( doc_id='document-id', fields=[search.TextField(name='subject', value='my first email'), search.HtmlField(name='body', value='<html>some content here</html>')]) # Index the document. try: index.put(doc) except search.PutError, e: result = e.results[0] if result.code == search.OperationResult.TRANSIENT_ERROR: # possibly retry indexing result.object_id except search.Error, e: # possibly log the failure # Query the index. try: results = index.search('subject:first body:here') # Iterate through the search results. for scored_document in results: # process the scored_document except search.Error, e: # possibly log the failure
생성자
Index
클래스의 생성자는 다음과 같이 정의됩니다.
-
Index(name, namespace=None)
Index
클래스의 인스턴스를 생성합니다.-
인수
- name
색인 이름입니다(자세한 내용은 아래의 name 속성 참조).
- namespace
멀티테넌트 지원 애플리케이션에서 색인 이름이 정의되는 네임스페이스입니다.
결과 값
Index
클래스의 새 인스턴스입니다.
속성
Index
클래스의 인스턴스에는 다음 속성이 있습니다.
- schema
필드 이름을 지원되는 유형 목록에 매핑하는 스키마입니다.
search.get_indexes
메서드로 반환된 색인에만 유효합니다.- name
색인을 식별하는 색인 이름으로 사람이 읽을 수 있는 ASCII 문자열입니다. 공백 문자를 포함하거나 느낌표(
!
)로 시작하면 안 됩니다.- namespace
색인 이름이 정의되는 네임스페이스입니다.
- storage_usage
이 색인에서 사용하는 대략적인 바이트 수입니다. 이 수치에는 최근 변경사항의 결과가 반영되지 않을 수도 있습니다.
search.get_indexes
메서드로 반환된 색인에만 유효합니다.- storage_limit
이 색인에 허용되는 바이트 단위의 최대 스토리지입니다.
search.get_indexes
메서드로 반환된 색인에만 유효합니다.
인스턴스 메서드
Index
클래스의 인스턴스에는 다음과 같은 메서드가 있습니다.
- put(self, documents, deadline=None)
-
지정된 문서를 이미 색인에 대입했고
doc_ids
가 동일한 경우 업데이트된 콘텐츠로 색인이 다시 생성됩니다. -
인수
- documents
색인을 생성할 문서(또는 반복 가능한 문서 컬렉션)입니다.
- deadline
RPC 호출 기한(초)입니다.
결과 값
색인 생성이 요청되는 문서마다 하나씩 해당되는 결과 목록(
PutResult
)입니다.
예외
- PutError
하나 이상의 문서에서 색인 생성에 실패했거나 색인 생성된 수가 요청된 수와 일치하지 않습니다.
- TypeError
알 수 없는 속성이 전달되었습니다.
- ValueError
인수가 문서 또는 반복 가능한 문서 컬렉션이 아니거나 문서 수가
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
보다 많습니다.
- delete(self, document_ids, deadline=None)
-
색인에서 문서를 삭제합니다.
목록에 해당하는 문서가 없는 식별자는 무시됩니다.
-
인수
- document_ids
삭제할 문서의 식별자(또는 식별자 목록)입니다.
- deadline
RPC 호출 기한(초)입니다.
예외
- DeleteError
하나 이상의 문서에서 삭제에 실패했거나 삭제된 수가 요청된 수와 일치하지 않습니다.
- ValueError
인수가 문자열 또는 반복 가능한 유효한 문서 식별자 컬렉션이 아니거나 문서 식별자의 수가
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
보다 많습니다.
- get(self,doc_id, deadline=None)
-
문서 식별자를 사용해 색인에서 문서를 검색합니다. 문서를 찾을 수 없는 경우
None
를 반환합니다. -
인수
- doc_id
-
검색할 문서의 식별자입니다.
- deadline
RPC 호출 기한(초)입니다.
결과 값
식별자가 doc_id에서 제공하는 식별자와 일치하는 문서 객체입니다.
- search(query, deadline=None)
쿼리와 일치하는 문서의 색인을 검색합니다. 쿼리는 문자열이거나 쿼리 객체일 수 있습니다.
예를 들어 다음 코드에서는 제목에서 'first'가 발생하고 어느 위치에서든 'good'이 발생하는 문서 검색을 요청합니다. 그 결과로 최대 20개의 문서를 반환하고 'cursor token'에서 검색을 시작하고 응답에 대해 다른 단일 커서를 반환하고 제목을 내림차순으로 정렬하며 작성자, 제목, 요약 필드와 스니펫 필드 콘텐츠를 반환합니다.
results = index.search( # Define the query by using a Query object. query=Query('subject:first good', options=QueryOptions(limit=20, cursor=Cursor(), sort_options=SortOptions( expressions=[SortExpression(expression='subject', default_value='')], limit=1000), returned_fields=['author', 'subject', 'summary'], snippeted_fields=['content'])))
다음 코드에서는 결과 커서를 사용하는 방법을 보여줍니다.
cursor = results.cursor for result in results: # process result results = index.search(Query('subject:first good', options=QueryOptions(cursor=cursor)) )
다음 코드에서는
per_result
커서를 사용하는 방법을 보여줍니다.results = index.search(query=Query('subject:first good', options=QueryOptions(limit=20, cursor=Cursor(per_result=True), ...)) ) cursor = None for result in results: cursor = result.cursor results = index.search( Query('subject:first good', options=QueryOptions(cursor=cursor)) )
-
인수
결과 값
일치하는 문서 목록, 반환되는 개수, 쿼리에서 일치하는 개수를 포함한 SearchResults 객체입니다.
예외
- TypeError
매개변수가 잘못된 유형이거나 알 수 없는 속성이 전달되었습니다.
- ValueError
매개변수의 값이 잘못되었습니다.
- get_range(self, start_id=None, include_start_object=True, limit=100, ids_only=False, deadline=None)
-
doc_id
주문의 색인에서 문서 범위 가져오기 -
인수
- start_id
문서를 나열할 문서 식별자를 포함한 문자열입니다. 기본적으로 첫 번째 문서 식별자에서 시작됩니다.
- include_start_object
true
인 경우,start_id
로 명시된 문서를 포함합니다.- limit
반환되는 문서의 최대 개수입니다.
- ids_only
true
인 경우 전체 문서 대신 문서 식별자만 반환합니다.- deadline
RPC 호출 기한(초)입니다.
결과 값
문서 식별자로 정렬된 검색된 문서의 목록을 포함하는
A GetResponse
객체입니다.
예외
- TypeError
알 수 없는 속성이 전달되었습니다.
- Error
요청을 처리하는 중에
Error
의 일부 서브클래스가 발생했습니다.