A classe Index
representa um índice que permite que os documentos sejam indexados, excluídos e pesquisados.
Index
é definido no módulo google.appengine.api.search
.
Introdução
A classe Index
fornece argumentos para criar um índice, bem como funções que permitem adicionar, listar, pesquisar e excluir documentos (ou uma coleção iterável de documentos) dentro do índice. Você cria um índice usando argumentos para a classe Index
, inclusive o nome e o namespace do índice.
O código a seguir mostra como colocar documentos em um índice e, em seguida, procura documentos correspondentes a uma consulta:
# 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
Construtor
O construtor da classe Index
é definido da seguinte maneira:
-
Index(name, namespace=None)
Crie uma instância da classe
Index
.-
Argumentos
- name
Nome do índice. Consulte a propriedade name, abaixo, para detalhes.
- namespace
Para aplicativos multilocatários, o namespace em que o nome do índice é definido.
Valor do resultado
Uma nova instância da classe
Index
.
Propriedades
Uma instância da classe Index
tem as seguintes propriedades:
- schema
Nomes de campo de mapeamento do esquema para a lista de tipos compatíveis. Válido apenas para índices retornados pelo método
search.get_indexes
.- name
Nome do índice, uma string ASCII legível que identifica o índice. Não pode conter caracteres de espaço em branco nem iniciar com um ponto de exclamação (
!
).- namespace
Namespace em que o nome do índice é definido.
- storage_usage
O número aproximado de bytes usados por esse índice. O número pode não refletir os resultados de alterações recentes. Válido apenas para índices retornados pelo método
search.get_indexes
.- storage_limit
O armazenamento máximo permitido para esse índice, em bytes. Válido apenas para índices retornados pelo método
search.get_indexes
.
Métodos da instância
As instâncias de classe Index
têm os seguintes métodos:
- put(self, documents, deadline=None)
-
Se os documentos especificados já tiverem sido colocados no índice e tiverem os mesmos
doc_ids
, eles serão reindexados com o conteúdo atualizado. -
Argumentos
- documents
Documento (ou coleção iterável de documentos) a ser indexado.
- deadline
Prazo para chamada RPC em segundos.
Valor do resultado
Lista de resultados (
PutResult
), um para cada documento solicitado para ser indexado.
Exceções
- PutError
Um ou mais documentos deixaram de ser indexados, ou o número indexado não correspondeu ao número solicitado.
- TypeError
Atributo desconhecido passado.
- ValueError
O argumento não é um documento ou uma coleção iterável de documentos, ou um número de documentos maior que
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
.
- delete(self, document_ids, deadline=None)
-
Exclua documentos do índice.
Se nenhum documento existir para um identificador na lista, esse identificador será ignorado.
-
Argumentos
- document_ids
Identificador (ou lista de identificadores) de documentos a serem excluídos.
- deadline
Prazo para chamada RPC em segundos.
Exceções
- DeleteError
Um ou mais documentos deixaram de ser excluídos, ou o número excluído não correspondeu ao número solicitado.
- ValueError
O argumento não é uma string ou uma coleção iterável de identificadores de documentos válidos, ou um número de identificadores de documentos maiores que
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
.
- get(self,doc_id, deadline=None)
-
Recupera um Document do índice usando o identificador do documento. Caso o documento não seja encontrado, retorna
None
. -
Argumentos
- doc_id
-
O identificador do documento a ser recuperado.
- deadline
Prazo para chamada RPC em segundos.
Valor do resultado
Um objeto Document com um identificador correspondente ao fornecido por doc_id.
- search(query, deadline=None)
Procura o índice dos documentos que correspondem à consulta. A consulta pode ser uma string ou um objeto Query.
Por exemplo, o fragmento de código a seguir solicita uma pesquisa de documentos em que "first" ocorre no assunto e "good" ocorre em qualquer lugar. Ele retorna, no máximo, 20 documentos, começando a pesquisa por "cursor token". Em seguida, retorna outro cursor para a resposta, classifica por assunto em ordem decrescente e retorna os campos de autor, assunto e resumo, bem como um conteúdo de campo em formato de snippet.
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'])))
O fragmento de código a seguir mostra como usar um cursor de resultados.
cursor = results.cursor for result in results: # process result results = index.search(Query('subject:first good', options=QueryOptions(cursor=cursor)) )
O fragmento de código a seguir mostra como usar um 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)) )
-
Argumentos
- query
-
A consulta correspondente aos documentos no índice, descritos em um objeto Query. Para mais informações, consulte a Visão geral da linguagem de consulta.
- deadline
Prazo para chamada RPC em segundos.
Valor do resultado
Um objeto SearchResults contendo uma lista de documentos correspondentes, número retornado e número correspondente à consulta.
Exceções
- TypeError
Um parâmetro tem um tipo inválido, ou um atributo desconhecido foi passado.
- ValueError
Um parâmetro tem um valor inválido.
- get_range(self, start_id=None, include_start_object=True, limit=100, ids_only=False, deadline=None)
-
Receba um intervalo de documentos de um índice, na ordem
doc_id
. -
Argumentos
- start_id
String que contém o identificador de documento com base em que os documentos são listados. Por padrão, começa no primeiro identificador de documento.
- include_start_object
No caso de
true
, inclua o documento especificado porstart_id
.- limit
Número máximo de documentos a serem retornados.
- ids_only
Caso seja
true
, retorne apenas identificadores de documento, em vez de documentos completos.- deadline
Prazo para chamada RPC em segundos.
Valor do resultado
O objeto
A GetResponse
que contém uma lista dos documentos recuperados, ordenados pelo identificador de documento.
Exceções
- TypeError
Atributo desconhecido passado.
- Erro
Alguma subclasse de
Error
ocorreu durante o processamento da solicitação.