La classe Index
rappresenta un indice che consente l'indicizzazione, l'eliminazione e la ricerca nei documenti.
Index
è definito nel modulo google.appengine.api.search
.
Introduzione
La classe Index
fornisce argomenti per creare un indice, nonché funzioni che consentono di aggiungere, elencare, cercare ed eliminare documenti (o una raccolta iterabile di documenti) all'interno dell'indice. Crea un indice utilizzando gli argomenti per la classe Index
, inclusi il nome e lo spazio dei nomi dell'indice.
Il codice seguente mostra come inserire documenti in un indice, quindi cercare in questo indice i documenti che corrispondono a una query:
# 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
Costruttore
Il costruttore della classe Index
viene definito come segue:
-
Indice(nome, spazio dei nomi=Nessuno)
Crea un'istanza di classe
Index
.-
Argomenti
- nome
Nome indice (per informazioni dettagliate, consulta la sezione proprietà del nome di seguito).
- spazio dei nomi
Per le applicazioni multitenant, lo spazio dei nomi in cui è definito il nome dell'indice.
Valore risultato
Una nuova istanza della classe
Index
.
Proprietà
Un'istanza della classe Index
ha le seguenti proprietà:
- schema
Nomi dei campi di mappatura dello schema all'elenco dei tipi supportati. Valido solo per gli indici restituiti dal metodo
search.get_indexes
.- nome
Nome dell'indice, una stringa ASCII leggibile che identifica l'indice. Non deve contenere spazi vuoti e non deve iniziare con un punto esclamativo (
!
).- spazio dei nomi
Spazio dei nomi in cui è definito il nome dell'indice.
- storage_usage
Il numero approssimativo di byte utilizzati da questo indice. Il numero potrebbe non riflettere i risultati delle modifiche recenti. Valido solo per gli indici restituiti dal metodo
search.get_indexes
.- storage_limit
Lo spazio di archiviazione massimo consentito per questo indice, in byte. Valido solo per gli indici restituiti dal metodo
search.get_indexes
.
Metodi di istanza
Le istanze della classe Index
hanno i seguenti metodi:
- put(self, documents, deadline=None)
-
Se i documenti specificati sono già stati inseriti nell'indice e hanno lo stesso
doc_ids
, vengono reindicizzati con contenuti aggiornati. -
Argomenti
- documenti
Documento (o raccolta iterabile di documenti) da indicizzare.
- scadenza
Scadenza per le chiamate RPC in secondi.
Valore risultato
Elenco dei risultati (
PutResult
), uno per ogni documento di cui è stata richiesta l'indicizzazione.
Eccezioni
- PutError
L'indicizzazione di uno o più documenti non è riuscita oppure il numero indicizzato non corrisponde al numero richiesto.
- TypeError
Attributo sconosciuto passato.
- ValueError
L'argomento non è un documento o una raccolta iterabile di documenti oppure un numero di documenti superiore a
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
.
- delete(self, document_ids, deadline=None)
-
Elimina documenti dall'indice.
Se nell'elenco non esiste alcun documento per un identificatore, questo identificatore viene ignorato.
-
Argomenti
- document_ids
Identificatore (o elenco di identificatori) dei documenti da eliminare.
- scadenza
Scadenza per le chiamate RPC in secondi.
Eccezioni
- DeleteError
Impossibile eliminare uno o più documenti oppure il numero eliminato non corrisponde al numero richiesto.
- ValueError
L'argomento non è una stringa o una raccolta iterabile di identificatori di documenti validi oppure un numero di identificatori di documenti superiore a
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
.
- get(self,doc_id, deadline=Nessuno)
-
Recupera un documento dall'indice utilizzando l'identificatore del documento. Se il documento non viene trovato, restituisce
None
. -
Argomenti
- doc_id
-
L'identificatore del documento da recuperare.
- scadenza
Scadenza per le chiamate RPC in secondi.
Valore risultato
Un oggetto Document il cui identificatore corrisponde a quello fornito da doc_id.
- ricerca(query, scadenza=Nessuna)
Cerca nell'indice i documenti che corrispondono alla query. La query può essere una stringa o un oggetto Query.
Ad esempio, il seguente frammento di codice richiede la ricerca di documenti in cui "primo" è presente nell'oggetto e "buono" ovunque, restituendo al massimo 20 documenti, avviando la ricerca da "cursor token", restituendo un altro cursore singolo per la risposta, ordinando per soggetto in ordine decrescente, restituendo i campi autore, oggetto e riepilogo, nonché i contenuti di un campo 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'])))
Il seguente frammento di codice mostra come utilizzare un cursore dei risultati.
cursor = results.cursor for result in results: # process result results = index.search(Query('subject:first good', options=QueryOptions(cursor=cursor)) )
Il seguente frammento di codice mostra come utilizzare un cursore
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)) )
-
Argomenti
- query
-
La query da associare ai documenti nell'indice, descritta in un oggetto Query. Per ulteriori informazioni, consulta la Panoramica del linguaggio delle query.
- scadenza
Scadenza per le chiamate RPC in secondi.
Valore risultato
Un oggetto SearchResults contenente un elenco di documenti corrispondenti, numero restituito e numero corrispondente alla query.
Eccezioni
- TypeError
Un parametro ha un tipo non valido oppure è stato trasmesso un attributo sconosciuto.
- ValueError
Un parametro contiene un valore non valido.
- get_range(self, start_id=Nessuno, include_start_object=True, limit=100, ids_only=False, deadline=Nessuno)
-
Recupera un intervallo di documenti da un indice, in ordine
doc_id
. -
Argomenti
- start_id
Stringa contenente l'identificatore del documento da cui elencare i documenti. Per impostazione predefinita, inizia dal primo identificatore del documento.
- include_start_object
Se
true
, includi il documento specificato dastart_id
.- limite
Numero massimo di documenti da restituire.
- ids_only
Se
true
, restituisci solo identificatori di documento anziché documenti completi.- scadenza
Scadenza per le chiamate RPC in secondi.
Valore risultato
L'oggetto
A GetResponse
contenente un elenco dei documenti recuperati, ordinati per identificatore documento.
Eccezioni
- TypeError
Attributo sconosciuto passato.
- Errore
Si è verificata una sottoclasse di
Error
durante l'elaborazione della richiesta.