Die Klasse Index
ist ein Index, mit dem Dokumente indexiert, gelöscht und durchsucht werden können.
Index
ist im Modul google.appengine.api.search
definiert.
Einführung
Die Klasse Index
bietet Argumente zum Erstellen eines Indexes sowie Funktionen, mit denen Sie Dokumente (oder eine iterierbare Sammlung von Dokumenten) innerhalb des Indexes einfügen, auflisten, durchsuchen und löschen können. Sie erstellen einen Index mithilfe von Argumenten für die Klasse Index
, einschließlich des Namens und des Namespaces für den Index.
Der folgende Code zeigt, wie Sie Dokumente in einen Index einfügen und anschließend nach Dokumenten suchen, die einer Abfrage entsprechen:
# 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
Konstruktor
Der Konstruktor für die Klasse Index
ist so definiert:
-
Index(name, namespace=None)
Konstruieren Sie eine Instanz der Klasse
Index
.-
Argumente
- name
Indexname (für Details siehe Property "name" weiter unten).
- Namespace
Für mehrinstanzenfähige Anwendungen der Namespace, in dem der Indexname definiert ist.
Ergebniswert
Eine neue Instanz der Klasse
Index
.
Eigenschaften
Eine Instanz der Klasse Index
hat die folgenden Attribute:
- schema
Schema, nach dem die Feldnamen der Liste der unterstützten Typen zugeordnet werden. Nur gültig für Indexe, die von der Methode
search.get_indexes
zurückgegeben werden.- name
Der Indexname ist ein von Menschen lesbarer ASCII-String. Er darf keine Leerzeichen enthalten und nicht mit einem Ausrufezeichen (
!
) beginnen.- Namespace
Namespace, in dem der Indexname definiert ist.
- storage_usage
Ungefähre Anzahl der von diesem Index verwendeten Byte. Die Zahl spiegelt möglicherweise nicht die Ergebnisse der letzten Änderungen wider. Nur gültig für Indexe, die von der Methode
search.get_indexes
zurückgegeben werden.- storage_limit
Maximal zulässiger Speicherplatz für diesen Index in Byte Nur gültig für Indexe, die von der Methode
search.get_indexes
zurückgegeben werden.
Instanzmethoden
Instanzen der Klasse Index
haben die folgenden Methoden:
- put(self, documents, deadline=None)
-
Wenn die angegebenen Dokumente bereits in den Index aufgenommen wurden und dieselben
doc_ids
haben, werden sie mit aktualisierten Inhalten neu indexiert. -
Argumente
- documents
Dokument (oder iterierbare Sammlung von Dokumenten) zum Indexieren.
- deadline
Zeitlimit für RPC-Aufruf in Sekunden.
Ergebniswert
Ergebnisliste (
PutResult
), eine für jedes Dokument, das indexiert werden soll.
Ausnahmen
- PutError
Ein oder mehrere Dokumente konnten nicht indexiert werden oder die Anzahl der indexierten Dokumente stimmte nicht mit der angeforderten überein.
- TypeError
Unbekanntes Attribut übergeben.
- ValueError
Das Argument entspricht nicht einem Dokument oder einer iterierbaren Sammlung von Dokumenten oder die Anzahl der Dokumente ist größer als
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
.
- delete(self, document_ids, deadline=None)
-
Löscht Dokumente aus dem Index.
Wenn einer in der Liste angegebenen ID kein Dokument entspricht, wird diese ID ignoriert.
-
Argumente
- document_ids
ID (oder Liste von IDs) von zu löschenden Dokumenten.
- deadline
Zeitlimit für RPC-Aufruf in Sekunden.
Ausnahmen
- DeleteError
Ein oder mehrere Dokumente konnten nicht gelöscht werden oder die Anzahl der gelöschten Dokumente stimmte nicht mit der angeforderten überein.
- ValueError
Das Argument entspricht nicht einem String oder einer iterierbaren Sammlung von Dokument-IDs oder die Anzahl der Dokumente ist größer als
MAXIMUM_DOCUMENTS_PER_PUT_REQUEST
.
- get(self,doc_id, deadline=None)
-
Ruft ein Dokument anhand seiner ID aus dem Index ab. Wenn das Dokument nicht gefunden wird, wird
None
zurückgegeben. -
Argumente
- doc_id
-
ID des Dokuments, das abgerufen werden soll.
- deadline
Zeitlimit für RPC-Aufruf in Sekunden.
Ergebniswert
Document-Objekt, dessen ID mit der von doc_id definierten übereinstimmt.
- search(query, deadline=None)
Durchsucht den Index nach Dokumenten, die mit der Abfrage übereinstimmen. Die Abfrage kann entweder ein String oder ein Query-Objekt sein.
Zum Beispiel fordert das folgende Codefragment eine Suche nach Dokumenten an, bei denen im Thema das Element "first" und an einer beliebigen Stelle das Wort "good" vorkommt, wobei höchstens 20 Dokumente zurückgegeben werden sollen. Die Suche beginnt am Cursor-Token und es wird ein weiterer einzelner Cursor für die Antwort zurückgegeben. Die Sortierung erfolgt nach Thema in absteigender Reihenfolge. Es werden der Autor, das Thema, Zusammenfassungsfelder sowie ein Snippet vom Feldinhalt zurückgegeben:
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'])))
Das folgende Codefragment zeigt, wie ein Ergebniscursor verwendet wird.
cursor = results.cursor for result in results: # process result results = index.search(Query('subject:first good', options=QueryOptions(cursor=cursor)) )
Das folgende Codefragment zeigt, wie ein
per_result
-Cursor verwendet wird: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)) )
-
Argumente
- query
-
Abfrage zum Abgleich mit den Dokumenten im Index, beschrieben in einem Query-Objekt. Weitere Informationen finden Sie in der Übersicht über die Abfragesprache.
- deadline
Zeitlimit für RPC-Aufruf in Sekunden.
Ergebniswert
SearchResults-Objekt mit einer Liste der übereinstimmenden Dokumente, der zurückgegebenen Anzahl und der mit der Abfrage übereinstimmenden Anzahl.
Ausnahmen
- TypeError
Ein Parameter hat einen ungültigen Typ oder ein unbekanntes Attribut wurde übergeben.
- ValueError
Ein Parameter hat einen ungültigen Wert.
- get_range(self, start_id=None, include_start_object=True, limit=100, ids_only=False, deadline=None)
-
Ruft eine Dokumentenreihe aus einem Index in der Reihenfolge
doc_id
ab. -
Argumente
- start_id
String mit der Dokument-ID, der die aufzulistenden Dokumente entsprechen sollen. Beginnt standardmäßig mit der ersten Dokument-ID.
- include_start_object
Bei
true
fügen Sie das durchstart_id
angegebene Dokument ein.- limit
Maximale Anzahl der zurückzugebenden Dokumente.
- ids_only
Wenn
true
, werden anstelle von vollständigen Dokumenten nur Dokument-IDs zurückgegeben.- deadline
Zeitlimit für RPC-Aufruf in Sekunden.
Ergebniswert
A GetResponse
-Objekt mit einer Liste der abgerufenen Dokumente, sortiert nach Dokument-ID.
Ausnahmen
- TypeError
Unbekanntes Attribut übergeben.
- Fehler
Bei der Verarbeitung der Anfrage ist eine Unterklasse von
Error
aufgetreten.