Wenn Sie die Methode Index.Search
nur mit einem Abfragestring aufrufen, werden die Ergebnisse entsprechend den Standardabfrageoptionen zurückgegeben:
- Dokumente werden in absteigender Rangfolge zurückgegeben
- Dokumente werden in Gruppen von jeweils 20 zurückgegeben
- Abgerufene Dokumente enthalten alle ihre ursprünglichen Felder
Sie können eine Instanz der Struktur SearchOptions
als Argument für Search
verwenden, um diese Optionen zu ändern.
Mit der Struktur SearchOptions
können Sie festlegen, wie viele Dokumente gleichzeitig zurückgegeben werden. Außerdem haben Sie die Möglichkeit, den Inhalt der abgerufenen Dokumente anzupassen. Sie können auch nur Dokumentkennungen abfragen oder die Anforderung festlegen, dass Dokumente nur eine Teilmenge ihrer Felder enthalten sollen. Weiter haben Sie die Möglichkeit, in den abgerufenen Dokumenten benutzerdefinierte Felder mit Feldausdrücken zu erstellen, also Felder mit Werten, die von anderen Feldern im Dokument abgeleitet werden.
Neben den Abfrageoptionen kann die Struktur `SearchOptions` auch eine Instanz der Struktur SortOptions
enthalten. Mit Sortieroptionen lassen sich die Sortierreihenfolge ändern und die Ergebnisse nach mehreren Schlüsseln sortieren.
SearchOptions
Diese Properties steuern, wie viele Ergebnisse und in welcher Reihenfolge diese zurückgegeben werden. Die Versatz- und Cursoroptionen unterstützen die Paginierung. Diese Optionen schließen sich gegenseitig aus. Mit ihnen wird festgelegt, welche ausgewählten Dokumente in den Ergebnissen zurückgegeben werden sollen.
Attribut | Beschreibung | Standard | Maximum |
---|---|---|---|
Limit |
Die maximale Anzahl von Dokumenten, die in den Ergebnissen zurückgegeben werden soll. | 20 | 1000 |
Offset |
Der Versatz des ersten Dokuments in den zurückzugebenden Ergebnissen. | 0. Die Ergebnisse enthalten alle übereinstimmenden Dokumente (bis zum Limit). | 1.000 |
Cursor |
Gruppen von Dokumenten können auch mit einem Cursor anstelle eines Versatzes in einer sortierten Reihenfolge abgerufen werden. Ein Cursor wird aktualisiert, wenn er in oder aus aufeinanderfolgenden Abfragen übergeben wird. Damit kann jede neue Suche direkt am Ende der vorherigen Suche ausgeführt werden. Cursor und Versatz werden auf der Seite Ergebnisse verarbeiten erläutert. | Null. Die Ergebnisse enthalten alle übereinstimmenden Dokumente (bis zum Limit). | - |
Sort |
Hiermit wird eine SortOptions -Struktur festgelegt, um die Reihenfolge der Suchergebnisse zu steuern. Eine Instanz von SortOptions hat ihre eigenen Attribute. Diese werden weiter unten erläutert. |
Null. Die Dokumente werden in absteigender Reihenfolge sortiert. | - |
Diese Properties bestimmen, welche Dokumentfelder in den Ergebnissen angezeigt werden.
Attribut | Beschreibung | Standard |
---|---|---|
IDsOnly |
Legen Sie dafür true oder false fest. Bei Angabe von true enthalten die in den Ergebnissen zurückgegebenen Dokumente nur IDs und keine Felder. |
false (gibt alle Felder zurück). |
Fields |
Gibt an, welche Dokumentfelder in die Ergebnisse einzuschließen sind. Es können höchstens 100 Felder angegeben werden. | Alle Dokumentfelder werden zurückgegeben (bis zu 100 Felder). |
Expressions |
Feldausdrücke, die berechnete Felder beschreiben, die jedem in den Suchergebnissen zurückgegebenen Dokument hinzugefügt werden. Diese Felder gehören dann zur Ausdrucks-Property des Dokuments. Der Feldwert ergibt sich aus einem Feldausdruck, der ein oder mehrere Dokumentfelder enthalten kann. | – |
SortOptions
Die Attribute von SortOptions
bestimmen Reihenfolge und Bewertung der Suchergebnisse.
Attribut | Beschreibung | Standard |
---|---|---|
Expressions |
Ein Slice von SortExpressions , das für eine mehrdimensionale Sortierung von Dokumenten steht. |
– |
Scorer |
eine optionale Scorer . Wenn vorhanden, werden die Dokumente entsprechend der Häufigkeit des Suchbegriffs bewertet. Die Bewertung steht als _score -Feld zur Verfügung. Die Bewertung von Dokumenten kann sowohl in Bezug auf die abrechnungsfähigen Vorgänge als auch auf die Ausführungszeit aufwendig sein und Suchvorgänge verlangsamen. Verwenden Sie die Bewertungsfunktion nur, wenn es nötig ist. |
– |
Limit |
Maximale Anzahl der Objekte, die bewertet und/oder sortiert werden sollen. Die Höchstzahl ist 10.000. | 1.000 |
Nach mehreren Schlüsseln sortieren
Sie können die Suchergebnisse nach mehreren Sortierschlüsseln sortieren. Ein Schlüssel kann dabei ein einfacher Feldname oder ein Wert sein, der aus mehreren Feldern berechnet wird. Dieser Ausdruck muss nach den Regeln, die im nächsten Abschnitt dargestellt werden, erstellt werden.
Mit SortExpression
lassen sich auch die Richtung der Sortierung und ein Standardschlüsselwert festlegen. Der Standardschlüsselwert wird verwendet, wenn der Ausdruck für ein Dokument nicht berechnet werden kann. Es folgt die vollständige Liste der Properties:
Attribut | Beschreibung | Standard |
---|---|---|
Expr |
Ein Ausdruck, der ausgewertet wird, wenn Ergebnisse für jedes übereinstimmende Dokument sortiert werden. | – |
Reverse |
Mit true erfolgt eine umgekehrte Sortierung der Suchergebnisse. Sie werden dann in aufsteigender Folge und nicht wie bei der Standardeinstellung absteigend aufgelistet. |
false |
Default |
Der Standardwert des Ausdrucks, wenn kein Feld vorhanden ist und für ein Dokument nicht berechnet werden kann. Für Textsortierungen muss ein Textwert angegeben werden. Für numerische Sortierungen muss ein numerischer Wert angegeben werden. | – |
Nach mehrwertigen Feldern sortieren
Wenn Sie nach einem Feld eines bestimmten Typs mit mehreren Werten sortieren, wird nur der erste Wert verwendet, der dem Feld zugewiesen ist. Angenommen, es gibt zwei Dokumente, DokA und DokB, die beide ein Textfeld namens „Farbe” enthalten. In DokA sind dem Feld „Farbe” zwei Werte in der Reihenfolge „rot, blau” zugewiesen, in DokB zwei Werte in der Reihenfolge „grün, rot”. Wenn Sie eine Sortierung mit dem Textfeld „Farbe“ vornehmen, wird DokA nach dem Wert „rot“ und DokB nach dem Wert „grün“ sortiert. Die anderen Feldwerte werden nicht für die Sortierung verwendet.
Sortieren oder nicht sortieren
Wenn Sie keine Sortieroptionen angeben, werden die Suchergebnisse automatisch in absteigender Reihenfolge zurückgegeben. In diesem Fall ist die Anzahl der zurückgegebenen Dokumente nicht begrenzt. Wenn Sie Sortieroptionen festlegen, wird erst nach der Auswahl aller übereinstimmenden Dokumente sortiert. Die Größe der Sortierung wird durch das explizite Attribut SortOptions.Limit
bestimmt. Sie können nie mehr als 10.000 Dokumente sortieren, der Standardwert ist 1.000. Wenn die Anzahl der übereinstimmenden Dokumente die durch
SortOptions.Limit
angegebene Anzahl überschreitet, wird nur diese begrenzte Anzahl in der Suche abgerufen, sortiert und zurückgegeben. Die Dokumente, die sortiert werden sollen, werden aus der in absteigender Rangfolge geordneten Liste aller übereinstimmenden Dokumente ausgewählt. Es ist möglich, dass eine Abfrage mehr übereinstimmende Dokumente zurückgibt, als sortiert werden können. Wenn Sie Sortieroptionen verwenden und jedes übereinstimmende Dokument abgerufen werden muss, achten Sie darauf, dass die Abfrage nicht mehr Dokumente zurückgibt, als sortiert werden können.
Ausdrücke schreiben
Mit Ausdrücken werden Feld- und Sortierausdrücke definiert. Erstere werden in SearchOptions
festgelegt, letztere in SortOptions
. Sie werden als Strings geschrieben:
"price * quantity"
"(men + women)/2"
"min(daily_use, 10) * rate"
"snippet('rose', flower, 120)"
Ausdrücke mit Zahlenfeldern können die arithmetischen Operatoren (+, -, *, /) und die integrierten numerischen Funktionen enthalten, die unten aufgeführt sind. Für Ausdrücke mit GeoPoint-Feldern stehen die GeoPoint- und Entfernungsfunktionen zur Verfügung. Ausdrücke für Text- und HTML-Felder können die Snippet-Funktion verwenden.
Ausdrücke können auch die folgenden speziellen Begriffe enthalten:
Begriff | Beschreibung |
---|---|
_rank |
Die Rang-Property eines Dokuments. Es kann in Feld- und Sortierausdrücken verwendet werden. |
_score |
Die einem Dokument zugewiesene Bewertung, wenn Sie Scorer in SortOptions verwenden. Dieser Begriff kann nur in Sortierausdrücken und nicht in Feldausdrücken verwendet werden. |
Numerische Funktionen
In Ausdrücken zur Definition numerischer Werte für FieldExpressions
und SortExpressions
können die im Folgenden aufgeführten integrierten Funktionen verwendet werden. Die Argumente müssen Zahlen, Feldnamen oder Ausdrücke mit Zahlen und Feldnamen sein.
Funktion | Beschreibung | Beispiel |
---|---|---|
max |
Gibt das größte Argument zurück. | max(recommended_retail_price, discount_price, wholesale_price) |
min |
Gibt das kleinste Argument zurück. | min(height, width, length) |
log |
Gibt den natürlichen Logarithmus zurück. | log(x) |
abs |
Gibt den absoluten Wert zurück. | abs(x) |
pow |
Benötigt zwei numerische Argumente. Der Aufruf "pow (x, y)" berechnet den Wert von x, der mit y potenziert ist. | pow(x, 2) |
count |
Benötigt einen Feldnamen als Argument. Gibt die Anzahl der Felder im Dokument mit diesem Namen zurück. Denken Sie daran, dass ein Dokument mehrere Felder unterschiedlichen Typs mit dem gleichen Namen enthalten kann. Hinweis: count kann nur in FieldExpressions verwendet werden. Es kann nicht in SortExpressions genutzt werden. |
count(user) |
Geopunktfunktionen
Diese Funktionen können für Ausdrücke mit Geopunktfeldern verwendet werden.
Funktion | Beschreibung | Beispiel |
---|---|---|
geopoint |
Definiert einen Geopunkt anhand eines Längen- und Breitengrads. | geopoint(-31.3, 151.4) |
distance |
Berechnet die Entfernung in Metern zwischen zwei Geopunkten. Beide Argumente können der Name eines Geopunktfelds oder ein Aufruf der Geopunktfunktion sein. Allerdings darf nur ein Argument ein Feldname sein. | distance(geopoint(23, 134), store_location) |
Snippets
Ein Snippet ist ein Fragment eines Textfelds, das mit einem Abfragestring übereinstimmt und den umgebenden Text enthält. Snippets werden durch Aufruf der snippet
-Funktion erstellt:
snippet(query, body, [max_chars])
query
- Ein Abfragestring in Anführungszeichen, der den Text angibt, der im Feld gesucht werden soll.
body
- Der Name eines Text-, HTML- oder Atomfelds.
max_chars
- Die maximale Anzahl an Zeichen, die im Snippet zurückgegeben werden soll. Dieses Argument ist optional und standardmäßig auf 160 Zeichen festgelegt.
Die Funktion gibt einen HTML-String zurück. Der String enthält ein Snippet aus dem Wert des Textfelds mit dem Text in Fettschrift, der mit der Abfrage übereinstimmt.