A classe Index
representa um índice que permite indexar, eliminar e pesquisar documentos.
Index
está definido no módulo google.appengine.api.search
.
Introdução
A classe Index
fornece argumentos para construir um índice, bem como funções que lhe permitem adicionar, listar, pesquisar e eliminar documentos (ou uma coleção iterável de documentos) no índice. Cria um índice com argumentos para a classe Index
, incluindo o nome e o espaço de nomes do índice.
O código seguinte mostra como colocar documentos num índice e, em seguida, pesquisar documentos que correspondam 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 forma:
-
Index(name, namespace=None)
Construa uma instância da classe
Index
.-
Argumentos
- name
Nome do índice (consulte a propriedade name abaixo para ver detalhes).
- namespace
Para aplicações multiinquilino, o espaço de nomes no qual o nome do índice está definido.
Valor do resultado
Uma nova instância da classe
Index
.
Propriedades
Uma instância da classe Index
tem as seguintes propriedades:
- schema
Mapeamento do esquema de nomes de campos para a lista de tipos suportados. Válido apenas para índices devolvidos pelo método
search.get_indexes
.- name
Nome do índice, uma string ASCII legível que identifica o índice. Não pode conter carateres de espaço em branco e não pode começar com um ponto de exclamação (
!
).- namespace
Espaço de nomes no qual o nome do índice está definido.
- storage_usage
O número aproximado de bytes usados por este índice. O número pode não refletir os resultados das alterações recentes. Válido apenas para índices devolvidos pelo método
search.get_indexes
.- storage_limit
O armazenamento máximo permitido para este índice, em bytes. Válido apenas para índices devolvidos pelo método
search.get_indexes
.
Métodos de instância
As instâncias da 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 o mesmo
doc_ids
, são reindexados com conteúdos atualizados. -
Argumentos
- documents
Documento (ou coleção iterável de documentos) a indexar.
- deadline
Prazo para a chamada RPC em segundos.
Valor do resultado
Lista de resultados (
PutResult
), um para cada documento cuja indexação foi pedida.
Exceções
- PutError
Não foi possível indexar um ou mais documentos, ou o número de documentos indexados não correspondeu ao número solicitado.
- TypeError
Foi transmitido um atributo desconhecido.
- ValueError
O argumento não é um documento ou uma coleção iterável de documentos, ou o número de documentos é superior a
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
.
- delete(self, document_ids, deadline=None)
-
Elimine documentos do índice.
Se não existir nenhum documento para um identificador na lista, esse identificador é ignorado.
-
Argumentos
- document_ids
Identificador (ou lista de identificadores) dos documentos a eliminar.
- deadline
Prazo para a chamada RPC em segundos.
Exceções
- DeleteError
Não foi possível eliminar um ou mais documentos, ou o número de documentos eliminados não corresponde ao número solicitado.
- ValueError
O argumento não é uma string nem uma coleção iterável de identificadores de documentos válidos, ou o número de identificadores de documentos é superior a
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
.
- get(self,doc_id, deadline=None)
-
Recupera um Document do índice através do identificador do documento. Se o documento não for encontrado, devolve
None
. -
Argumentos
- doc_id
-
O identificador do documento a obter.
- deadline
Prazo para a chamada RPC em segundos.
Valor do resultado
Um objeto Document cujo identificador corresponde ao fornecido por doc_id.
- search(consulta, prazo=None)
Pesquise no índice documentos que correspondam à consulta. A consulta pode ser uma string ou um objeto Query.
Por exemplo, o seguinte fragmento de código pede uma pesquisa de documentos em que "first" ocorre no assunto e "good" ocorre em qualquer lugar, devolvendo, no máximo, 20 documentos, começando a pesquisa a partir de "cursor token", devolvendo outro cursor único para a resposta, ordenando por assunto por ordem descendente, devolvendo os campos autor, assunto e resumo, bem como o conteúdo de um campo com fragmentos.
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 seguinte 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 seguinte 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
- consulta
-
A consulta a fazer corresponder aos documentos no índice, descrita num objeto Query. Para mais informações, consulte a vista geral da linguagem de consulta.
- deadline
Prazo para a chamada RPC em segundos.
Valor do resultado
Um objeto SearchResults que contém uma lista de documentos correspondentes, o número devolvido e o número correspondente à consulta.
Exceções
- TypeError
Um parâmetro tem um tipo inválido ou foi transmitido um atributo desconhecido.
- 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)
-
Obter um intervalo de documentos a partir de um índice, por ordem
doc_id
. -
Argumentos
- start_id
String que contém o identificador do documento a partir do qual listar os documentos. Por predefinição, começa no primeiro identificador de documento.
- include_start_object
Se
true
, inclua o documento especificado porstart_id
.- limit
Número máximo de documentos a devolver.
- ids_only
Se
true
, devolve apenas identificadores de documentos em vez de documentos completos.- deadline
Prazo para a chamada RPC em segundos.
Valor do resultado
Objeto
A GetResponse
que contém uma lista dos documentos obtidos, ordenada pelo identificador do documento.
Exceções
- TypeError
Foi transmitido um atributo desconhecido.
- Erro
Ocorreu alguma subclasse de
Error
durante o processamento do pedido.