La clase Index
representa un índice que permite indexar, eliminar y buscar documentos.
Index
se define en el módulo google.appengine.api.search
.
Introducción
La clase Index
proporciona argumentos para crear un índice, así como funciones que te permiten añadir, enumerar, buscar y eliminar documentos (o una colección iterable de documentos) en el índice. Para crear un índice, usa argumentos de la clase Index
, incluidos el nombre y el espacio de nombres del índice.
El siguiente código muestra cómo insertar documentos en un índice y, a continuación, buscar documentos que coincidan con una 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
Constructor
El constructor de la clase Index
se define de la siguiente manera:
-
Index(name, namespace=None)
Crea una instancia de la clase
Index
.-
Argumentos
- name
Nombre del índice (consulta los detalles en la propiedad name, más abajo).
- namespace
En el caso de las aplicaciones multicliente, el espacio de nombres en el que se define el nombre del índice.
Valor de resultado
Una nueva instancia de la clase
Index
.
Propiedades
Una instancia de la clase Index
tiene las siguientes propiedades:
- esquema
Nombres de campos de asignación de esquemas a la lista de tipos admitidos. Solo es válido para los índices devueltos por el método
search.get_indexes
.- name
Nombre del índice, una cadena ASCII legible que identifica el índice. No debe contener caracteres de espacio y no debe empezar por un signo de exclamación (
!
).- namespace
Espacio de nombres en el que se define el nombre del índice.
- storage_usage
Número aproximado de bytes que usa este índice. Es posible que el número no refleje los resultados de los cambios recientes. Solo es válido para los índices devueltos por el método
search.get_indexes
.- storage_limit
El almacenamiento máximo permitido para este índice, en bytes. Solo es válido para los índices devueltos por el método
search.get_indexes
.
Métodos de instancia
Las instancias de la clase Index
tienen los siguientes métodos:
- put(self, documents, deadline=None)
-
Si los documentos especificados ya se han incluido en el índice y tienen el mismo
doc_ids
, se vuelven a indexar con el contenido actualizado. -
Argumentos
- documentos
Documento (o colección iterable de documentos) que se va a indexar.
- deadline
Fecha límite de la llamada RPC en segundos.
Valor de resultado
Lista de resultados (
PutResult
), uno por cada documento cuya indexación se haya solicitado.
Excepciones
- PutError
No se ha podido indexar uno o varios documentos, o el número de documentos indexados no coincide con el número solicitado.
- TypeError
Se ha enviado un atributo desconocido.
- ValueError
El argumento no es un documento o una colección iterable de documentos, o el número de documentos es superior a
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
.
- delete(self, document_ids, deadline=None)
-
Eliminar documentos del índice.
Si no hay ningún documento asociado a un identificador de la lista, se ignora ese identificador.
-
Argumentos
- document_ids
Identificador (o lista de identificadores) de los documentos que se van a eliminar.
- deadline
Fecha límite de la llamada RPC en segundos.
Excepciones
- DeleteError
No se han podido eliminar uno o varios documentos, o el número de documentos eliminados no coincide con el número solicitado.
- ValueError
El argumento no es una cadena o una colección iterable de identificadores de documentos válidos, o el número de identificadores de documentos es superior a
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
.
- get(self,doc_id, deadline=None)
-
Recupera un Document del índice mediante el identificador del documento. Si no se encuentra el documento, devuelve
None
. -
Argumentos
- doc_id
-
Identificador del documento que se va a obtener.
- deadline
Fecha límite de la llamada RPC en segundos.
Valor de resultado
Un objeto Document cuyo identificador coincida con el proporcionado por doc_id.
- search(query, deadline=None)
Busca en el índice los documentos que coincidan con la consulta. La consulta puede ser una cadena o un objeto Query.
Por ejemplo, el siguiente fragmento de código solicita una búsqueda de documentos en los que aparezca "first" en el asunto y "good" en cualquier parte, devuelve un máximo de 20 documentos, inicia la búsqueda desde "cursor token", devuelve otro cursor para la respuesta, ordena los resultados por asunto en orden descendente y devuelve los campos de autor, asunto y resumen, así como el contenido de un campo con 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'])))
El siguiente fragmento de código muestra cómo usar un cursor de resultados.
cursor = results.cursor for result in results: # process result results = index.search(Query('subject:first good', options=QueryOptions(cursor=cursor)) )
En el siguiente fragmento de código se muestra cómo usar un 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
-
Consulta para buscar coincidencias en los documentos del índice, descrita en un objeto Query. Para obtener más información, consulta la descripción general del lenguaje de consulta.
- deadline
Fecha límite de la llamada RPC en segundos.
Valor de resultado
Un objeto SearchResults que contiene una lista de documentos coincidentes, el número de resultados devueltos y el número de resultados coincidentes con la consulta.
Excepciones
- TypeError
Un parámetro tiene un tipo no válido o se ha enviado un atributo desconocido.
- ValueError
Un parámetro tiene un valor no válido.
- get_range(self, start_id=None, include_start_object=True, limit=100, ids_only=False, deadline=None)
-
Obtiene un intervalo de documentos de un índice en orden
doc_id
. -
Argumentos
- start_id
Cadena que contiene el identificador del documento del que se van a enumerar los documentos. De forma predeterminada, empieza por el primer identificador de documento.
- include_start_object
Si
true
, incluye el documento especificado porstart_id
.- limit
Número máximo de documentos que se devolverán.
- ids_only
Si es
true
, devuelve solo los identificadores de los documentos en lugar de los documentos completos.- deadline
Fecha límite de la llamada RPC en segundos.
Valor de resultado
Objeto
A GetResponse
que contiene una lista de los documentos recuperados, ordenada por identificador de documento.
Excepciones
- TypeError
Se ha enviado un atributo desconocido.
- Error
Se ha producido una subclase de
Error
al procesar la solicitud.