Index 클래스

클래스 Index는 문서의 색인 생성, 삭제, 검색을 허용하는 색인을 나타냅니다.

Indexgoogle.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에서 제공하는 식별자와 일치하는 문서 객체입니다.

쿼리와 일치하는 문서의 색인을 검색합니다. 쿼리는 문자열이거나 쿼리 객체일 수 있습니다.

예를 들어 다음 코드에서는 제목에서 '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))
               )

인수

query

쿼리 객체에 설명된 대로 색인의 문서와의 일치 여부를 비교하는 쿼리입니다. 자세한 내용은 쿼리 언어 개요를 참조하세요.

deadline

RPC 호출 기한(초)입니다.

결과 값

일치하는 문서 목록, 반환되는 개수, 쿼리에서 일치하는 개수를 포함한 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의 일부 서브클래스가 발생했습니다.