La classe Index
rappresenta un indice che consente di indicizzare, eliminare e cercare i documenti.
Index
è definito nel modulo google.appengine.api.search
.
Introduzione
La classe Index
fornisce argomenti per la costruzione di un indice, nonché funzioni che consentono di aggiungere, elencare, cercare ed eliminare documenti (o una raccolta di documenti iterabile) all'interno dell'indice. Puoi creare un indice utilizzando gli argomenti della classe Index
, inclusi il nome e lo spazio dei nomi dell'indice.
Il seguente codice mostra come inserire i documenti in un indice e poi cerca i documenti corrispondenti 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
è definito come segue:
-
Index(name, namespace=None)
Costruisci un'istanza della classe
Index
.-
Argomenti
- name
Nome dell'indice (per maggiori dettagli, consulta la proprietà name di seguito).
- namespace
Per le applicazioni multitenant, lo spazio dei nomi in cui è definito il nome dell'indice.
Valore del risultato
Una nuova istanza della classe
Index
.
Proprietà
Un'istanza della classe Index
ha le seguenti proprietà:
- schema
Mappa i nomi dei campi dello schema all'elenco dei tipi supportati. Valido solo per gli indici restituiti dal metodo
search.get_indexes
.- name
Nome dell'indice, una stringa ASCII leggibile che identifica l'indice. Non deve contenere spazi vuoti e non deve iniziare con un punto esclamativo (
!
).- namespace
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 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 sottoposti nuovamente a indicizzazione con contenuti aggiornati. -
Argomenti
- documenti
Documento (o raccolta di documenti iterabile) da indicizzare.
- deadline
Scadenza per la chiamata RPC in secondi.
Valore del risultato
Elenco di risultati (
PutResult
), uno per ogni documento di cui è stata richiesta l'indicizzazione.
Eccezioni
- PutError
Non è stato possibile indicizzare uno o più documenti oppure il numero di documenti indicizzati non corrisponde a quello richiesto.
- TypeError
È stato passato un attributo sconosciuto.
- ValueError
L'argomento non è un documento o una raccolta di documenti iterabili o il numero di documenti è superiore a
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
.
- delete(self, document_ids, deadline=None)
-
Elimina i documenti dall'indice.
Se non esiste alcun documento per un identificatore nell'elenco, questo viene ignorato.
-
Argomenti
- document_ids
Identificatore (o elenco di identificatori) dei documenti da eliminare.
- deadline
Scadenza per la chiamata RPC in secondi.
Eccezioni
- DeleteError
Non è stato possibile eliminare uno o più documenti oppure il numero di documenti eliminati non corrisponde a quello richiesto.
- ValueError
L'argomento non è una stringa o una raccolta iterabile di identificatori di documenti validi oppure il numero di identificatori di documenti è superiore a
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
.
- get(self,doc_id, deadline=None)
-
Recupera un documento dall'indice utilizzando l'identificatore del documento. Se il documento non viene trovato, viene restituito
None
. -
Argomenti
- doc_id
-
L'identificatore del documento da recuperare.
- deadline
Scadenza per la chiamata RPC in secondi.
Valore del risultato
Un oggetto Document il cui identificatore corrisponde a quello fornito da doc_id.
- search(query, deadline=None)
Cerca nell'indice i documenti corrispondenti alla query. La query può essere una stringa o un oggetto Query.
Ad esempio, il seguente frammento di codice richiede una ricerca dei documenti in cui "primo" si verifica nell'oggetto e "buono" si verifica in qualsiasi posizione, restituisce al massimo 20 documenti, avvia la ricerca da "token cursore", restituisce un altro singolo cursore per la risposta, ordina per oggetto in ordine decrescente, restituisce i campi autore, oggetto e riepilogo, nonché i contenuti dei campi con 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 confrontare con i documenti nell'indice, descritta in un oggetto Query. Per ulteriori informazioni, consulta la Panoramica del linguaggio di query.
- deadline
Scadenza per la chiamata RPC in secondi.
Valore del risultato
Un oggetto SearchResults contenente un elenco di documenti corrispondenti, il numero restituito e il numero di corrispondenze trovate dalla query.
Eccezioni
- TypeError
Un parametro ha un tipo non valido o è stato passato un attributo sconosciuto.
- ValueError
Un parametro ha un valore non valido.
- get_range(self, start_id=None, include_start_object=True, limit=100, ids_only=False, deadline=None)
-
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
.- limit
Il numero massimo di documenti da restituire.
- ids_only
Se
true
, restituisce solo gli identificatori dei documenti anziché i documenti completi.- deadline
Scadenza per la chiamata RPC in secondi.
Valore del risultato
Oggetto
A GetResponse
contenente un elenco dei documenti recuperati, ordinati per identificatore documento.
Eccezioni
- TypeError
È stato passato un attributo sconosciuto.
- Errore
Si è verificato un sottotipo di
Error
durante l'elaborazione della richiesta.