FAST Query Language (FQL)-Operatoren
Letzte Änderung: Freitag, 1. Juli 2011
Gilt für: SharePoint Server 2010
Inhalt dieses Artikels
Übersicht über die FQL-Operatoren
AND
ANDNOT
ANY
COUNT
DATETIME
ENDS-WITH
EQUALS
FILTER
FLOAT
INT
NEAR
NOT
ONEAR
OR
PHRASE
RANGE
RANK
STARTS-WITH
STRING
XRANK
Bei FAST Query Language (FQL)-Operatoren handelt es sich um Schlüsselwörter, mit denen boolesche Vorgänge oder andere Einschränkungen für Operanden angegeben werden. Für FQL-Operatoren gilt folgende Syntax:
[property-spec:]operator(operand [,operand]* [, parameter="value"]*)
Bei dieser Syntax gibt es folgende Bestandteile:
property-spec ist eine optionale Eigenschaftenspezifikation, auf die der IN-Operator folgt.
operator ist ein Schlüsselwort für einen auszuführenden Vorgang.
operand ist ein Ausdruck oder ein sonstiger Operator.
parameter ist der Name eines Werts, mit dem das Verhalten des Operators geändert wird.
value ist der für den Parameternamen zu verwendende Wert.
Bei Operatornamen, Parameternamen und Parametertextwerten wird die Groß-/Kleinschreibung nicht beachtet. Leerzeichen sind innerhalb des Operators zulässig, werden aber nur berücksichtigt, wenn sie in doppelte Anführungszeichen eingeschlossen sind.
Übersicht über die FQL-Operatoren
FQL unterstützt die folgenden Typen von Operatoren:
Typ |
Beschreibung |
Operatoren |
---|---|---|
Zeichenfolge |
Ermöglicht das Angeben von Abfragevorgängen für Zeichenfolgen. Dies ist der gängigste Operator für Zeichenfolgen. |
|
Boolesch |
Ermöglicht das Kombinieren von Begriffen und Unterausdrücken in einer Abfrage. |
|
Nähe |
Ermöglicht das Angeben der Nähe der Abfragebegriffe in einer übereinstimmenden Textzeichenfolge |
|
Numerisch |
Ermöglicht das Angeben numerischer Bedingungen in der Abfrage. |
|
Relevanz |
Ermöglicht das Beeinflussen der Relevanzbewertung einer Abfrage. |
In der folgenden Tabelle sind die unterstützten Operatoren aufgelistet.
Operator |
Beschreibung |
Typ |
---|---|---|
Gibt nur Elemente zurück, die mit allen AND-Operanden übereinstimmen. |
Boolesch |
|
Gibt nur Elemente zurück, die mit dem ersten Operanden übereinstimmen, nicht aber mit den folgenden Operanden. |
Boolesch |
|
Vergleichbar mit dem OR-Operator, nur dass die dynamische Rangfolge (die Relevanzbewertung im Resultset) weder von der Zahl der übereinstimmenden Operanden noch vom Abstand zwischen den Suchausdrücken im Element beeinflusst wird. |
Boolesch |
|
Gibt an, wie oft ein Abfrageausdruck in einem Element vorhanden sein muss, um als Ergebnis zurückgegeben zu werden. Der Operand kann ein einzelner Abfragebegriff, ein Ausdruck oder ein Platzhalterabfrageausdruck sein. |
Boolesch |
|
Stellt explizite Typen für numerische Werte bereit. Die explizite Typumwandlung ist optional und in der Regel nicht erforderlich. Der Typ des Abfrageausdrucks wird anhand des Typs der numerischen verwalteten Zieleigenschaft ermittelt. |
Numerisch |
|
Gibt an, dass ein Wort oder Ausdruck am Ende einer verwalteten Eigenschaft vorhanden sein muss. |
Nähe |
|
Gibt an, dass ein Wort oder Ausdruck eine genaue Tokenübereinstimmung mit der verwalteten Eigenschaft aufweisen muss. |
Nähe |
|
Wird zum Abfragen von Metadaten oder anderen strukturierten Daten verwendet. |
Relevanz |
|
Stellt explizite Typen für numerische Werte bereit. Die explizite Typumwandlung ist optional und in der Regel nicht erforderlich. Der Typ des Abfrageausdrucks wird anhand des Typs der numerischen verwalteten Zieleigenschaft ermittelt. |
Numerisch |
|
Stellt explizite Typen für numerische Werte bereit. Die explizite Typumwandlung ist optional und in der Regel nicht erforderlich. Der Typ des Abfrageausdrucks wird anhand des Typs der numerischen verwalteten Zieleigenschaft ermittelt. |
Numerisch |
|
Beschränkt das Resultset auf Elemente, die N Ausdrücke in einem bestimmten Abstand voneinander enthalten. |
Näherung |
|
Gibt nur Elemente zurück, die nicht mit dem Operanden übereinstimmen. Bei dem Operanden kann es sich um einen beliebigen gültigen FQL-Ausdruck handeln. |
Boolesch |
|
Die sortierte Variante von NEAR; die Ausdrücke müssen in der richtigen Reihenfolge übereinstimmen. Mit dem ONEAR-Operator kann das Resultset auf Elemente beschränkt werden, die N Ausdrücke in einem bestimmten Abstand voneinander enthalten. |
Näherung |
|
Gibt nur Elemente zurück, die mit mindestens einem der OR-Operanden übereinstimmen. Je mehr der OR-Operanden übereinstimmen, umso höher die dynamische Rangfolge (die Relevanzbewertung im Resultset). |
Boolesch |
|
Gibt nur Elemente zurück, die mit einer genauen Tokenzeichenfolge übereinstimmen. |
Nähe |
|
Ermöglicht Ausdrücke für die Bereichsübereinstimmung. Der RANGE-Operator wird für numerische verwaltete Eigenschaften und verwaltete Eigenschaften vom Typ Datum/Uhrzeit verwendet. |
Numerisch |
|
Ermöglicht das Anheben der dynamischen Rangfolge von Elementen basierend auf bestimmten Ausdrucksinstanzen, ohne zu ändern, welche Elemente mit der Abfrage übereinstimmen. Ein RANK-Ausdruck enthält eine Komponente, mit der eine Übereinstimmung vorhanden sein muss, und eine oder mehrere Komponenten nur für die dynamische Rangfolge. |
Relevanz |
|
Gibt an, dass ein Wort oder Ausdruck am Anfang einer verwalteten Eigenschaft vorhanden sein muss. |
Nähe |
|
Definiert eine boolesche Übereistimmungsbedingung für eine Textzeichenfolge. |
Zeichenfolge |
|
Ermöglicht das Anheben der dynamischen Rangfolge von Elementen basierend auf bestimmten Ausdrucksinstanzen, ohne zu ändern, welche Elemente mit der Abfrage übereinstimmen. Ein XRANK-Ausdruck enthält eine Komponente, mit der eine Übereinstimmung vorhanden sein muss, und eine oder mehrere Komponenten nur für die dynamische Rangfolge. Dieser Operator ist mit dem RANK-Operator vergleichbar, weist jedoch unterschiedliche Leistungsmerkmale und eine unterschiedliche Kontrolle des Rangfolgenbeitrags auf. |
Relevanz |
AND
Gibt nur Elemente zurück, die mit allen AND-Operanden übereinstimmen. Bei den Operanden kann es sich um einen einzelnen Begriff oder beliebigen gültigen FQL-Unterausdruck handeln.
Syntax
and(operand, operand [, operand]*)
Parameter
Nicht zutreffend.
Beispiele
Beispiel 1. Mit dem folgenden Ausdruck werden übereinstimmende Elemente gesucht, für die der standardmäßige Volltextindex "cat", "dog" und "fox" enthält.
and(cat, dog, fox)
ANDNOT
Gibt nur Elemente zurück, die nur mit dem ersten Operanden und nicht mit den nachfolgenden Operanden übereinstimmen. Bei den Operanden kann es sich um einen einzelnen Begriff oder beliebigen gültigen FQL-Unterausdruck handeln.
Syntax
andnot(operand, operand [,operand]*)
Parameter
Nicht zutreffend.
Beispiele
Beispiel 1. Mit dem folgenden Ausdruck werden übereinstimmende Elemente gesucht, für die der standardmäßige Volltextindex "cat", aber nicht "dog" enthält.
andnot(cat, dog)
Beispiel 2. Mit dem folgenden Ausdruck werden übereinstimmende Elemente gesucht, für die der standardmäßige Volltextindex "dog", aber nicht "beagle" oder "chihuahua" enthält.
andnot(dog, beagle, chihuahua)
ANY
Vergleichbar mit dem OR-Operator, nur dass die dynamische Rangfolge (die Relevanzbewertung im Resultset) weder von der Zahl der übereinstimmenden Operanden noch vom Abstand zwischen den Suchausdrücken im Element beeinflusst wird. Bei den Operanden kann es sich um einen einzelnen Begriff oder beliebigen gültigen FQL-Unterausdruck handeln.
Die Komponente für die dynamische Rangfolge für diesen Teil der Abfrage basiert auf dem Ausdruck mit der besten Übereinstimmung innerhalb des ANY-Ausdrucks.
Hinweis |
---|
Der Unterschied zu OR besteht nur bei der Rangfolge innerhalb des Resultsets. Insgesamt stimmen dieselben Elemente mit der Abfrage überein. |
Syntax
any(operand, operand [,operand]*)
Parameter
Nicht zutreffend.
Beispiele
Beispiel 1. Mit dem folgenden Ausdruck werden übereinstimmende Elemente gesucht, für die der standardmäßige Volltextindex "cat" oder "dog" enthält.
Wenn der Index sowohl "cat" als auch "dog" enthält, aber "cat" als bessere Übereinstimmung betrachtet wird, basiert die dynamische Rangfolge des Elements auf "cat", und "dog" wird ignoriert.
any(cat, dog)
COUNT
Gibt an, wie oft ein Abfrageausdruck in einem Element vorhanden sein muss, um als Ergebnis zurückgegeben zu werden. Der Operand kann ein einzelner Abfragebegriff, ein Ausdruck oder ein Platzhalterabfrageausdruck sein.
Syntax
property-spec:count(operand [,from=<numeric value>, to=<numeric value>])
Parameter
Parameter |
Wert |
Beschreibung |
---|---|---|
from |
<numerischer Wert> |
Der Wert des from-Parameters muss eine positive ganze Zahl sein, die angibt, wie oft für den angegebenen Operanden mindestens eine Übereinstimmung vorhanden sein muss. Wenn der from-Parameter nicht angegeben wird, gibt es keine Untergrenze. |
to |
<numerischer Wert> |
Der Wert des to-Parameters muss eine positive ganze Zahl sein, die angibt, wie oft für den angegebenen Operanden maximal (nicht einschließlich) eine Übereinstimmung vorhanden sein muss. Beispielsweise bedeutet der Wert 11 für to maximal 10 Mal. Wenn der to-Parameter nicht angegeben wird, gibt es keine Obergrenze. |
Beispiele
Beispiel 1. Mit dem folgenden Ausdruck werden Übereinstimmungen mit mindestens 5 Instanzen des Worts "cat" gesucht.
count(cat, from=5)
Beispiel 2. Mit dem folgenden Ausdruck werden Übereinstimmungen mit mindestens 5 und maximal 9 Instanzen des Worts "cat" gesucht.
count(cat, from=5, to=10)
DATETIME
Stellt explizite Typen für numerische Datums-/Uhrzeitwerte bereit. Der Operand ist eine Datum/Uhrzeit-Zeichenfolge, die gemäß der in Abfrageausdrücke für Datum und Uhrzeit angegebenen Syntax formatiert ist.
Die explizite Typumwandlung ist optional und in der Regel nicht erforderlich. Der Typ des Abfrageausdrucks wird anhand des Typs der numerischen verwalteten Zieleigenschaft ermittelt.
Syntax
datetime(<date/time string>)
Parameter
Nicht zutreffend.
ENDS-WITH
Gibt an, dass ein Wort oder Ausdruck am Ende einer verwalteten Eigenschaft vorhanden sein muss (Grenzübereinstimmung).
Die Grenzübereinstimmung wird für numerische verwaltete Eigenschaften nicht unterstützt. Für numerische verwaltete Eigenschaften gilt immer die genaue Übereinstimmung oder die Wertbereichsübereinstimmung.
Für manche Anwendungen kann es erforderlich sein, dass nach einer genauen Übereinstimmung für eine verwaltete Eigenschaft gesucht werden kann. Beispielsweise die verwaltete Eigenschaft product name, bei der der vollständige Name eines Produkts eine Teilzeichenfolge eines anderen Produktnamens ist.
Syntax
ends-with(<term or phrase>)
Parameter
Nicht zutreffend.
Beispiele
Beispiel 1. Mit dem folgenden Ausdruck werden übereinstimmende Elemente mit den Werten "Mr Adam Jones" und "Adam Jones" in der verwalteten Eigenschaft "author" gesucht. Elemente mit dem Wert "Adam Jones sr" stellen keine Übereinstimmung dar.
author:ends-with("adam jones")
Hinweise
Die Grenzübereinstimmung kann auf den gesamten Text der verwalteten Eigenschaft angewendet werden, oder auf einzelne Zeichenfolgen innerhalb einer verwalteten Eigenschaft, die eine Liste von Zeichenfolgenwerten enthält, wie z. B. eine Liste von Namen. In diesem Fall möchten Sie nach Übereinstimmungen für den genauen Inhalt jeder Zeichenfolge suchen und die Abfrageübereinstimmung über Zeichenfolgengrenzen hinweg vermeiden.
Zum Anwenden von Grenzübereinstimmungsabfragen müssen Sie die entsprechende verwaltete Eigenschaft im Indexschema konfigurieren.
Das Aktivieren des Grenzübereinstimmungsfeatures für die verwaltete Eigenschaft ermöglicht Folgendes:
Verwenden expliziter Grenzübereinstimmungsabfragen.
Verhindern von Übereinstimmungen mit Ausdrücken über Zeichenfolgengrenzen hinweg. Für verwaltete Eigenschaften, die mehrere Zeichenfolgen enthalten, wird mit diesem Feature sichergestellt, dass eine Zeichenfolge nicht mit Wörtern vor oder nach einer Grenzangabe übereinstimmt.
EQUALS
Gibt an, dass ein Wort oder Ausdruck eine genaue Tokenübereinstimmung mit der verwalteten Eigenschaft aufweisen muss.
Syntax
equals(<term or phrase>)
Parameter
Nicht zutreffend.
Beispiele
Beispiel 1. Im folgenden Beispiel werden übereinstimmende Elemente mit den Werten "Adam Jones" in der verwalteten Eigenschaft "author" gesucht. Elemente mit den Werten "Adam Jones sr" oder "Mr Adam Jones" stellen keine Übereinstimmung dar.
author:equals("adam jones")
Hinweise
Siehe auch ENDS-WITH.
FILTER
Wird zum Abfragen von Metadaten oder anderen strukturierten Daten verwendet.
Die Verwendung des FILTER-Operators impliziert automatisch Folgendes für die angegebene Abfrage:
Die Linguistik wird auf linguistics="OFF" festgelegt.
Die Rangfolge wird deaktiviert.
In der Zusammenfassung mit Treffermarkierung wird für Abfrageergebnistreffer keine Abfragehervorhebung verwendet.
Tipp |
---|
Wenn Sie den STRING-Operator in einem FILTER-Ausdruck verwenden, ist die Linguistik standardmäßig deaktiviert. Sie können die linguistische Verarbeitung innerhalb jedes STRING-Ausdrucks in FILTER mithilfe des Operanden linguistics="ON" aktivieren. |
Syntax
filter(<any valid FQL operator expression>)
Parameter
Nicht zutreffend.
Beispiele
Beispiel 1. Mit dem folgenden Ausdruck werden übereinstimmende Elemente gesucht, deren verwaltete Eigenschaft title "sonata" und deren verwaltete Eigenschaft doctype nur das Token "audio" enthält. Es wird keine Suche nach linguistischen Übereinstimmen für "audio" ausgeführt. Da das FILTER-Token zur Suche nach einer Übereinstimmung mit "audio" verwendet wird, wird dieser Text in der Zusammenfassung mit Treffermarkierung nicht hervorgehoben.
and(title:sonata, filter(doctype:equals("audio")))
Hinweise
Wenn Sie die Abfrage auf die Übereinstimmung mit mindestens einem der vielen ganzzahligen Werte in einer numerischen Eigenschaft einschränken müssen, können Sie dazu zwei bezüglich ihrer Funktionalität gleichwertige Ausdrücke verwenden:
and(string("hello world"), filter(property-spec:or(1, 20, 453, ... , 3473)))
and(string("hello world"), filter(property-spec:int("1 20 453 ... 3473", mode="or")))
Im zweiten Beispiel wird der INT-Operator mit einer Zeichenfolge bestehend aus den numerischen Werten in doppelten Anführungszeichen verwendet. Dadurch wird beim Filtern vieler numerischer Werte die Abfrageleistung erheblich verbessert.
Wenn Sie viele Werte filtern müssen, sollten Sie eventuell numerische Werte anstelle von Zeichenfolgenwerten verwenden und diese optimierte Syntax für Abfragen einsetzen.
FLOAT
Stellt explizite Typen für numerische Gleitkommawerte bereit. Der Operand ist ein Gleitkommawert gemäß der in Numerische Ausdrücke angegebenen Syntax.
Die explizite Typumwandlung ist optional und in der Regel nicht erforderlich. Der Typ des Abfrageausdrucks wird anhand des Typs der numerischen verwalteten Zieleigenschaft ermittelt.
Syntax
float(<floating point value>)
Parameter
Nicht zutreffend.
INT
Stellt explizite Typen für ganzzahlige Werte bereit. Der Operand ist eine ganzzahliger Wert gemäß der in Numerische Ausdrücke angegebenen Syntax.
Die explizite Typumwandlung ist optional und in der Regel nicht erforderlich. Der Typ des Abfrageausdrucks wird anhand des Typs der numerischen verwalteten Zieleigenschaft ermittelt.
Mit dem INT-Operator können auch ganzzahlige Werte als Argumente für boolesche FQL-Operatoren angegeben werden. Dies stellt eine leistungseffiziente Methode dar, um ganzzahlige Werte in einer Abfrage bereitzustellen. Denn die mit dem INT-Operator übergebenen Werte werden vom FQL-Abfrageparser nicht analysiert, sondern direkt an die Abfrageübereinstimmungskomponente übergeben.
Syntax
int(<integer value>)
int("value, value, … , value")
Mit der ersten Syntax wird eine einzelne ganze Zahl angegeben. Mit der zweiten Syntax wird eine durch Trennzeichen getrennte Liste von ganzen Zahlen angegeben, die in doppelte Anführungszeichen eingeschlossen sind.
Parameter
Nicht zutreffend.
Beispiele
Beispiel 1. Wenn Sie die Abfrage auf die Übereinstimmung mit mindestens einem der vielen ganzzahligen Werte in einer numerischen Eigenschaft einschränken müssen, können Sie dazu den INT-Operator verwenden:
and(string("hello world"), filter(id:int("1 20 49 124 453 985 3473", mode="or")))
NEAR
Beschränkt das Resultset auf Elemente, die N Ausdrücke in einem bestimmten Abstand voneinander enthalten.
Die Reihenfolge der Abfrageausdrücke spielt für die Übereinstimmung keine Rolle, wichtig ist nur der Abstand.
Eine beliebige Anzahl von Ausdrücken kann mit NEAR-Operatoren kombiniert werden.
NEAR-Operanden können einzelne Wörter, Ausdrücke oder boolesche Ausdrücke mit OR- oder ANY-Operatoren sein. Die Eingabe von Platzhaltern ist möglich.
Wenn mehrere Operanden des NEAR-Operators mit demselben indizierten Token übereinstimmen, gelten sie als nahe beieinander.
Syntax
near(arg, arg [, arg]* [, N=<numeric value>])
Parameter
Parameter |
Wert |
Beschreibung |
---|---|---|
N |
<numerischer Wert> |
Gibt die maximal zulässige Anzahl von Wörtern zwischen den Ausdrücken an (explizite Nähe). Wenn NEAR mehr als zwei Operanden enthält, wird die maximal zulässige Anzahl von Wörtern zwischen den Ausdrücken (N) innerhalb des gesamten Abfrageausdrucks gezählt. Standard: 4 |
Beispiele
Beispiel 1. Mit dem folgenden Ausdruck werden übereinstimmende Zeichenfolgen gesucht, die sowohl "cat" als auch "dog" enthalten und die durch maximal vier indizierte Token (Standard) getrennt sind.
near(cat, dog)
Beispiel 2. Mit dem folgenden Ausdruck werden übereinstimmende Zeichenfolgen gesucht, die "cat", "dog", "fox" und "wolf" enthalten und die durch maximal vier indizierte Token getrennt sind.
near(cat, dog, fox, wolf)
In der folgenden Tabelle finden Sie Beispiele für Zeichenfolgenwerte von verwalteten Eigenschaften und Angaben dazu, ob sie mit dem vorherigen Ausdruck in Beispiel 2 übereinstimmen.
Übereinstimmung? |
Text |
---|---|
Ja |
The picture shows a cat, a dog, a fox, and a wolf. |
Ja (mit Wortstammerkennung) |
Dogs, foxes, and wolves are canines, but cats are felines. |
Nein |
The picture shows a cat with a dog, a fox, and a wolf. |
Der folgende Ausdruck stimmt mit allen Zeichenfolgen in der vorherigen Tabelle überein.
near(cat, dog, fox, wolf, N=5)
Beispiel 3. Mit dem folgenden Ausdruck wird nach einer Übereinstimmung mit einer verwalteten Eigenschaft gesucht, die nur das indizierte Token "clarinet" enthält, da sowohl "c*t" und "clarinet" übereinstimmen und als nahe beieinander gelten, auch wenn beide Suchtoken mit demselben indizierten Token übereinstimmen.
near("c*t", "clarinet")
Hinweise
Überlegungen zum Abstand von Ausdrücken bei NEAR/ONEAR
N gibt die maximal zulässige Anzahl von Wörtern zwischen den Abfrageausdrücken innerhalb des übereinstimmenden Segments des Elements an. Wenn NEAR oder ONEAR mehr als zwei Operanden enthält, wird die maximal zulässige Anzahl von Wörtern zwischen den Abfrageausdrücken (N) innerhalb des Elementsegments gezählt, das mit allen NEAR- oder ONEAR-Ausdrücken übereinstimmt.
NEAR oder ONEAR wird für mit Token versehenen Text ausgeführt. Dies bedeutet, dass Sonderzeichen wie Komma (","), Punkt ("."), Doppelpunkt (":") oder Semikolon (";") als Leerzeichen behandelt werden. Der Begriff "Abstand" bezieht sich auf Token innerhalb des indizierten Texts.
Wenn Sie ONEAR oder NEAR mit Gleichheitsoperanden verwenden, funktioniert der Operator wie folgt:
near(a, a, n=x)
Diese Abfrage gibt immer true zurück, wenn mindestens eine Instanz von ''a'' im Kontext vorhanden ist. Dies bedeutet auch, dass NEAR nicht als COUNT-Operator verwendet werden kann. Weitere Informationen zum Zählen von Ausdrucksinstanzen finden Sie unter COUNT-Operator.
Wenn NEAR auf Ausdrücke angewendet wird, werden auch überlappende Ausdrücke im Text als Übereinstimmungen gefunden.
Wenn ein Token im übereinstimmenden Segment mit mehr als einem Operanden des NEAR- oder ONEAR-Ausdrucks übereinstimmt, werden mit der Abfrage möglicherweise Übereinstimmungen gefunden, selbst wenn die Anzahl nicht übereinstimmender Token innerhalb des übereinstimmenden Segments den Wert 'N' im Ausdruck des NEAR- oder ONEAR-Operators überschreitet. Eine Überlappung können z. B. überlappende Ausdrücke sein. Wenn die Anzahl von Tokenüberlappungsübereinstimmungen gleich 'O' ist, wird mit der Abfrage eine Übereinstimmung gefunden, falls maximal 'N+O' nicht übereinstimmende Token im übereinstimmenden Segment des Elements vorhanden sind.
NEAR oder ONEAR** mit NOT**
Der NOT-Operator kann nicht innerhalb des NEAR- oder ONEAR-Operators verwendet werden. Die folgende FQL-Syntax ist ungültig:
near(audi,not(bmw),n=2)
NOT
Gibt nur Elemente zurück, die nicht mit dem Operanden übereinstimmen. Bei dem Operanden kann es sich um einen beliebigen gültigen FQL-Ausdruck handeln.
Syntax
not(operand)
Parameter
Nicht zutreffend.
ONEAR
Die sortierte Variante von NEAR; die Ausdrücke müssen in der richtigen Reihenfolge übereinstimmen. Mit dem ONEAR-Operator kann das Resultset auf Elemente beschränkt werden, die N Ausdrücke in einem bestimmten Abstand voneinander enthalten.
Syntax
onear(arg, arg [, arg]* [, N=<numeric value>])
Parameter
Parameter |
Wert |
Beschreibung |
---|---|---|
N |
<numerischer Wert> |
Gibt die maximal zulässige Anzahl von Wörtern zwischen den Ausdrücken an (explizite Nähe). Wenn ONEAR mehr als zwei Operanden enthält, wird die maximal zulässige Anzahl von Wörtern zwischen den Ausdrücken (N) innerhalb des gesamten Abfrageausdrucks gezählt. Standard: 4 |
Beispiele
Beispiel 1. Mit dem folgenden Ausdruck werden Übereinstimmungen mit allen Instanzen der Wörter "cat", "dog", "fox" und "wolf" gesucht, die in dieser Reihenfolge angegeben sind und durch maximal vier indizierte Token getrennt sind.
onear(cat, dog, fox, wolf)
In der folgenden Tabelle finden Sie Beispiele für Zeichenfolgenwerte von verwalteten Eigenschaften und Angaben dazu, ob sie mit dem vorherigen Ausdruck übereinstimmen.
Übereinstimmung? |
Text |
---|---|
Ja |
The picture shows a cat, a dog, a fox, and a wolf. |
Nein |
Dogs, foxes, and wolves are canines, but cats are felines. |
Nein |
The picture shows a cat with a dog, a fox, and a wolf. |
Beispiel 2. Der folgende Ausdruck stimmt (mit Wortstammerkennung) mit dem Text der zweiten Zeile der vorherigen Tabelle überein.
onear(dog, fox, wolf, cat, N=5)
Beispiel 3. Der folgende Ausdruck stimmt mit dem Text in der ersten und dritten Zeile der vorherigen Tabelle überein.
onear(cat, dog, fox, wolf, N=5)
Hinweise
Siehe auch NEAR.
OR
Gibt nur Elemente zurück, die mit mindestens einem der OR-Operanden übereinstimmen. Je mehr der OR-Operanden übereinstimmen, umso höher die dynamische Rangfolge (die Relevanzbewertung im Resultset). Bei den Operanden kann es sich um einen einzelnen Begriff oder beliebigen gültigen FQL-Unterausdruck handeln.
Syntax
or(operand, operand [,operand]*)
Parameter
Nicht zutreffend.
Beispiele
Beispiel 1. Mit dem folgenden Ausdruck werden alle übereinstimmenden Elemente gesucht, für die der standardmäßige Volltextindex entweder "cat" oder "dog" enthält. Wenn der standardmäßige Volltextindex eines Elements sowohl "cat" als auch "dog" enthält, stimmt er überein und hat eine höhere dynamische Rangfolge, als wenn er nur eines der Token enthalten würde.
or(cat, dog)
PHRASE
Sucht nach einer genauen Tokenzeichenfolge.
PHRASE-Operanden können einzelne Begriffe sein. Die Angabe von Platzhaltern ist möglich.
Syntax
phrase(term [, term]*)
Parameter
Nicht zutreffend.
Hinweise
Siehe auch STRING.
RANGE
Der RANGE-Operator wird für numerische verwaltete Eigenschaften und verwaltete Eigenschaften vom Typ Datum/Uhrzeit verwendet. Dieser Operator ermöglicht Ausdrücke für die Bereichsübereinstimmung.
Syntax
range(start, end [,from="GE"|"GT"] [,to="LE"|"LT"])
Parameter
Parameter |
Wert |
Beschreibung |
---|---|---|
start |
<numerischer Wert>|<Datums-/Uhrzeitwert> |
Der Wert für den Bereichsanfang. Verwenden Sie das reservierte Wort min, um anzugeben, dass der Bereich keine Untergrenze aufweist. |
stop |
<numerischer Wert>|<Datums-/Uhrzeitwert> |
Der Wert für das Bereichsende. Verwenden Sie das reservierte Wort max, um anzugeben, dass der Bereich keine Obergrenze aufweist. |
from |
GE|GT |
Ein optionaler Parameter zum Angeben des Intervallbeginns. Gültige Werte:
Standard: GE |
to |
LE|LT |
Ein optionaler Parameter zum Angeben des Intervallendes. Gültige Werte:
Standard: LT |
Beispiele
Beispiel 1 Der folgende Ausdruck stimmt mit einer Beschreibungseigenschaft überein, die mit "olympic games" beginnt und in Elementen mit mindestens 10.000 Bytes vorhanden ist.
and(size:range(10000, max), description:starts-with("olympic games"))
RANK
Ermöglicht das Anheben der dynamischen Rangfolge von Elementen basierend auf bestimmten Ausdrucksinstanzen, ohne zu ändern, welche Elemente mit der Abfrage übereinstimmen. Ein RANK-Ausdruck enthält eine Komponente, mit der eine Übereinstimmung vorhanden sein muss, und eine oder mehrere Komponenten nur für die dynamische Rangfolge.
Es gibt zwischen den Operatoren RANK und XRANK die folgenden Unterschiede:
XRANK ist wesentlich effizienter als RANK, wenn Ausdrücke in den RANK-Operanden viele Treffer generieren.
Für XRANK kann die Heraufstufungsebene zum Abfragezeitpunkt über den boost-Parameter festgelegt werden.
Mit XRANK wird ein konstanter Rangfolgenwert hinzugefügt, während mit RANK ein den Operanden zugeordneter Rangfolgenwert hinzugefügt wird.
Mit XRANK wird Elementen eine Rangfolge hinzugefügt, die keine dynamische Rangfolge erhalten haben.
Die XRANK-Operanden können auch für verwaltete Eigenschaften (nicht nur für Volltextindizes) verwendet werden.
Der RANK-Operator akzeptiert mindestens zwei Operanden. Der erste Operand ist der Hauptabfrageausdruck für die Suche nach einer Übereinstimmung. Er trägt wie jeder Begriff oder Ausdruck zum Rückruf oder zur Genauigkeit bei. Die nachfolgenden Operanden tragen zur Heraufstufung der dynamischen Rangfolge bei, haben aber keine Auswirkungen darauf, welche Elemente mit der Abfrage übereinstimmen. Bei den Operanden kann es sich um einzelne Begriffe oder einen beliebigen gültigen FQL-Unterausdruck handeln.
Der RANK-Operator kann nur für Volltextindizes verwendet werden.
Syntax
rank(operand, rank-operand [, rank-operand]*)
Parameter
Nicht zutreffend.
Beispiele
Beispiel 1. Mit dem folgenden Ausdruck werden übereinstimmende Elemente gesucht, für die der Index "dog" enthält. Mit diesem Ausdruck wird die dynamische Rangfolge eines Elements angehoben, wenn dessen Index auch "cat" enthält. Ist im Index "cat", aber nicht "dog" vorhanden, stimmt das Element nicht mit dem Ausdruck überein.
rank(dog, cat)
Beispiel 2. Mit dem folgenden Ausdruck werden übereinstimmende Elemente gesucht, für die der Index "dog" enthält. Mit diesem Ausdruck wird die dynamische Rangfolge eines Elements angehoben, wenn dessen Index auch "boxer" oder "pointer" enthält.
rank(dog, boxer, pointer)
Beispiel 3. Mit dem folgenden Ausdruck werden Übereinstimmungen mit denselben Elementen wie im vorherigen Ausdruck gesucht, aber die dynamische Rangfolge eines Elements wird angehoben, wenn der Index auch den Ausdruck "thoroughbred beagle" enthält.
rank(dog, "thoroughbred beagle")
Beispiel 4. Mit dem folgenden Ausdruck werden übereinstimmende Elemente gesucht, für die die verwaltete Eigenschaft title sowohl "dog" als auch "beagle" enthält. Mit diesem Ausdruck wird die dynamische Rangfolge von Elementen erhöht, für die die verwaltete Eigenschaft title auch das indizierte Token "thoroughbred" enthält.
and(title:dog, rank(title:beagle, title:thoroughbred))
STARTS-WITH
Gibt an, dass ein Wort oder Ausdruck am Anfang einer verwalteten Eigenschaft vorhanden sein muss.
Syntax
starts-with(<term or phrase>)
Parameter
Nicht zutreffend.
Beispiele
Beispiel 1. Mit dem folgenden Ausdruck werden übereinstimmende Elemente mit den Werten "Adam Jones sr" und "Adam Jones" in der verwalteten Eigenschaft author gesucht. Elemente mit dem Wert "Mr Adam Jones" stellen keine Übereinstimmung dar.
author:starts-with("adam jones")
Hinweise
Zusätzliche Hinweise zur Grenzübereinstimmung finden Sie unter ENDS-WITH.
STRING
Definiert eine boolesche Übereistimmungsbedingung für eine Textzeichenfolge.
Der Operand ist eine Textzeichenfolge (einer oder mehrere Ausdrücke), für die eine Übereinstimmung gesucht wird. Auf die Zeichenfolge folgen keine oder mehrere Parameter.
Der STRING-Operator kann auch als Typkonvertierung verwendet werden. Beispielsweise wird mit der Abfrage string("24.5") der numerische Wert "24.5" als Textzeichenfolge behandelt.
Syntax
string("<text string>"
[, mode=<mode>]
[, n=<near>]
[, weight=<n>]
[, linguistics=<on|off>]
[, wildcard=<on|off>]
[, minexpansion=<n>]
[, maxexpansion=<n>]
[, annotation_class=<annotation_string>])
Parameter
Parameter |
Wert |
Beschreibung |
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
mode |
<Modus> |
Der mode-Parameter gibt an, wie der Wert <Textzeichenfolge> ausgewertet werden soll. In der folgenden Tabelle sind gültige Werte aufgelistet.
Standard: "PHRASE" |
||||||||||||||||||
n |
<numerischer Wert> |
Dieser Parameter gibt den maximalen Abstand zwischen Ausdrücken für mode="NEAR" oder mode="ONEAR" an. Die folgenden Ausdrücke sind gleichwertig:. string("hello world", mode="NEAR", n=5) near(hello, world, n=5) Standard: 4 |
||||||||||||||||||
weight |
<numerischer Wert> |
Dieser Parameter ist ein positiver numerischer Wert zur Angabe der Ausdrucksgewichtung für die dynamische Rangfolge. Ein niedrigerer Wert bedeutet, dass ein Ausdruck in geringerem Maß zur Rangfolge beitragen soll. Ein höherer Wert bedeutet, dass ein Ausdruck in höherem Maß zur Rangfolge beitragen soll. Mit dem Wert 0 für diesen Parameter wird angegeben, dass ein Ausdruck keine Auswirkung auf die dynamische Rangfolge haben soll. Der weight-Parameter gilt für alle Elemente des STRING-Ausdrucks.
Standard: 100. |
||||||||||||||||||
linguistics |
on|off |
Deaktiviert/aktiviert alle linguistischen Features für die Zeichenfolge (Lemmatisierung, Synonyme, Rechtschreibprüfung), falls sie für die Abfrage aktiviert sind. Mit diesem Parameter können Sie die linguistische Verarbeitung für einen Ausdruck oder eine Zeichenfolge ausschalten, während der Ausdruck oder die Zeichenfolge weiterhin zur Rangfolge beitragen soll. Standard: "ON" |
||||||||||||||||||
wildcard |
on|off |
Dieser Parameter steuert die Platzhaltererweiterung von Ausdrücken innerhalb der <Textzeichenfolge>. Diese Einstellung überschreibt Platzhaltereinstellungen in Abfrageparametern und ermöglicht das Aktivieren bzw. Deaktivieren erweiterter Platzhalterzeichen für bestimmte Teile der Abfrage. Folgende Werte sind gültig:
Standard: "ON" |
||||||||||||||||||
minexpansion |
<positive_ganze_Zahl> |
Dieser Parameter definiert die minimale Länge einer Teilzeichenfolge bei der Platzhaltererweiterung. Der Wert von <Zeichenfolge> muss ein Platzhalterausdruck mit einem einzelnen Sternchen sein. Standard: 0 |
||||||||||||||||||
maxexpansion |
<positive_ganze_Zahl> |
Dieser Parameter definiert die maximale Länge einer Teilzeichenfolge bei der Platzhaltererweiterung. Der Wert von <Zeichenfolge> muss ein Platzhalterausdruck mit einem einzelnen Sternchen sein. Standard: infinity |
||||||||||||||||||
annotation_class |
<Anmerkungszeichenfolge> |
Mit dem STRING-Parameter annotation_class="user" wird einem STRING-Knoten eine Anmerkung hinzugefügt, um darauf hinzuweisen, dass dieser Knoten vom Benutzer generiert wird. Bestimmte Relevanzfeatures werden nur auf den vom Benutzer generierten Teil der Abfrage angewendet. Hierzu gehören die Abfrageheraufstufung basierend auf Ankertext sowie Durchklickabfrageprotokolle. |
Beispiele
Beispiel 1. Der Standardzeichenfolgenmodus ist "PHRASE", weshalb mit jedem der folgenden Ausdrücke dieselben Ergebnisse zurückgegeben werden.
"what light through yonder window breaks"
string("what light through yonder window breaks")
string("what light through yonder window breaks", mode="phrase")
phrase(what, light, through, yonder, window, breaks)
Beispiel 2. Der folgende Zeichenfolgentokenausdruck und der Ausdruck mit dem AND-Operator geben dieselben Ergebnisse zurück.
string("cat dog fox", mode="and")
and(cat, dog, fox)
Beispiel 3. Der folgende Zeichenfolgentokenausdruck und der Ausdruck mit dem OR-Operator geben dieselben Ergebnisse zurück.
string("coyote saguaro", mode="or")
or(coyote, saguaro)
Beispiel 4. Der folgende Zeichenfolgentokenausdruck und der Ausdruck mit dem ANY-Operator geben dieselben Ergebnisse zurück.
string("coyote saguaro", mode="any")
any(coyote, saguaro)
Beispiel 5. Der folgende Zeichenfolgentokenausdruck und der Ausdruck mit dem NEAR-Operator geben dieselben Ergebnisse zurück.
string("coyote saguaro", mode="near")
near(coyote, saguaro)
Beispiel 6. Der folgende Zeichenfolgentokenausdruck und der Ausdruck mit dem NEAR-Operator geben dieselben Ergebnisse zurück.
string("cat dog fox wolf", mode="near", N=4)
near(cat, dog, fox, wolf, N=4)
Beispiel 7. Der folgende Zeichenfolgentokenausdruck und der Ausdruck mit dem ONEAR-Operator geben dieselben Ergebnisse zurück.
string("cat dog fox wolf", mode="onear")
onear(cat, dog, fox, wolf)
Beispiel 8. Das Fragezeichen ("?") und das Sternchen ("*") werden als Platzhalterzeichen ausgewertet, weshalb der folgende Zeichenfolgentokenausdruck Übereinstimmungen mit "cat", "cot" und einem beliebigen anderen mit drei Buchstaben indizierten Token, das mit "c" beginnt und mit "t" endet, findet.
string("c?t")
string("c*t")
Beispiel 9. Mit dem folgenden Zeichenfolgentokenausdruck werden Übereinstimmungen für das Wort "nobler" mit deaktivierten linguistischen Features gesucht, weshalb für andere Wortformen (wie z. B. "ennobling") nicht mithilfe der Wortstammerkennung Übereinstimmungen gefunden werden.
string("nobler", linguistics="off")
Beispiel 10. Mit dem folgenden Ausdruck werden übereinstimmende Elemente gesucht, die "cat" oder "dog" enthalten. Mit diesem Ausdruck wird aber die dynamische Rangfolge von Elementen, die das Wort "dog" enthalten, stärker angehoben als vergleichsweise von Elementen, die das Wort "cat" enthalten.
or(string("cat", weight="200"), string("dog", weight="500"))
Beispiel 11. Mit dem folgenden Ausdruck werden Übereinstimmungen für alle Begriffe gesucht, die mit "prefix" beginnen und mit "suffix" enden, wobei die Teilzeichenfolge zwischen "prefix" und "suffix" maximal 4 Zeichen lang ist.
string("prefix*suffix",maxexpansion=4)
Beispiel 12. Mit dem folgenden Zeichenfolgentokenausdruck werden Übereinstimmungen für die Wörter "microsoft corporation" gesucht. Durch Hinzufügen des annotation_class-Parameters wird sichergestellt, dass für Elemente mit exakt dem gleichen Ankertext in einem Link, der auf das Element verweist, eine zusätzliche Rangfolgenheraufstufung vorgenommen wird.
string("Microsoft corporation", annotation_class="user")
Hinweise
Relevanzgewichtung für die dynamische Rangfolge
Der weight-Parameter hat in erster Linie Auswirkungen auf Abfragen mit OR. Er kann auch gewisse Auswirkungen auf Abfragen mit AND haben. Der Algorithmus für die dynamische Rangfolge kann implizieren, dass unterschiedliche Ausdrücke einen unterschiedlichen Rangfolgenbeitrag leisten, je nachdem, wo im Element die Ausdrucksübereinstimmung auftritt.
Der unterschiedliche Rangfolgenbeitrag kann auch auf der Häufigkeit von Ausdrücken und der umgekehrten Häufigkeit von Elementen basieren. Es folgt ein Beispiel:
Abfrage: and(string("a"), string("b", weight=200))
Indexschema: Die verwaltete Eigenschaft title hat eine stärke Gewichtung als die verwaltete Eigenschaft body.
Indexelement 1 enthält das Zeichen 'a' im Titel und das Zeichen 'b' im Text.
Indexelement 2 enthält das Zeichen 'a' im Text und das Zeichen 'b' im Titel.
In diesem Beispiel erhält Element 2 die höchste Gesamtrangfolge, da die Elemente mit einem höheren dynamischen Rangfolgenbeitrag sogar noch stärker heraufgestuft werden.
Tipp |
---|
Die relative Ausdrucksheraufstufung (positiv oder negativ) wird auf die dynamische Rangfolgenkomponente der Gesamtrangfolge angewendet. Die Rangfolgenberechnungen der Näherungsheraufstufung (Abstand zwischen Wörtern) sind jedoch nicht von der Ausdrucksgewichtung betroffen. Die relative Gewichtung bedeutet nicht immer, dass die Gesamtrangfolge des Elements gemäß dem vorliegenden Prozentsatz geändert wird. Mit der folgenden Abfrage wird nach den Wörtern "peter", "paul" oder "mary" gesucht, wobei "peter" den doppelten Beitrag zur Rangfolge leistet wie die beiden anderen Wörter. or(peter, string("paul mary", mode="OR", weight=50)) |
Zeichenfolgen mit Sonderzeichen
Sonderzeichen wie Komma (","), Semikolon (";"), Doppelpunkt (":"), Punkt ("."), Minuszeichen ("-"), Unterstrich ("_") oder Schrägstrich ("/") werden innerhalb eines Zeichenfolgenausdrucks als Leerzeichen behandelt, wenn sie in doppelte Anführungszeichen eingeschlossen sind. Dies ist ähnlich wie beim Tokenisierungsprozess. Diese Zeichen beinhalten auch eine implizite Anordnung der durch diese Zeichen getrennten Token.
Die folgenden Abfrageausdrücke sind gleichwertig.
title:string("animals birds", mode="phrase")
title:"animals/birds"
title:string("animals/birds", mode="and")
title:string("animals/birds", mode="or")
Die folgenden Abfrageausdrücke sind gleichwertig.
title:or(string("animals birds", mode="phrase"),
string("animals insects", mode="phrase"))
title:string("animals/birds animals/insects", mode="or")
Die folgenden Abfrageausdrücke sind gleichwertig.
body:string("help contoso com", mode="phrase")
body:string("help@contoso.com")
Ausdrucksübereinstimmung unter Verwendung von Token
Mit dem STRING-Operator in Verbindung mit mode="phrase" oder dem PHRASE-Operator können Sie nach einer genauen Tokenzeichenfolge suchen.
Alle derartigen Ausdrucksvorgänge implizieren eine Ausdrucksübereinstimmung unter Verwendung von Token. Dies bedeutet, dass Sonderzeichen wie Komma (","), Semikolon (";"), Doppelpunkt (":"), Unterstrich ("_"), Minuszeichen ("-") oder Schrägstrich ("/") als Leerzeichen behandelt werden. Dies ist ähnlich wie beim Tokenisierungsprozess.
XRANK
Ermöglicht das Anheben der dynamischen Rangfolge von Elementen basierend auf bestimmten Ausdrucksinstanzen, ohne zu ändern, welche Elemente mit der Abfrage übereinstimmen. Ein XRANK-Ausdruck enthält eine Komponente, mit der eine Übereinstimmung vorhanden sein muss, und eine oder mehrere Komponenten nur für die dynamische Rangfolge.
Es gibt zwischen den Operatoren RANK und XRANK die folgenden Unterschiede:
XRANK ist wesentlich effizienter als RANK, wenn Ausdrücke in den RANK-Operanden viele Treffer generieren.
Für XRANK kann die Heraufstufungsebene zum Abfragezeitpunkt über den boost-Parameter festgelegt werden.
Mit XRANK wird ein konstanter Rangfolgenwert hinzugefügt, während mit RANK ein den Operanden zugeordneter Rangfolgenwert hinzugefügt wird.
Mit XRANK wird Elementen eine Rangfolge hinzugefügt, die keine dynamische Rangfolge erhalten haben.
Die XRANK-Operanden können auch für verwaltete Eigenschaften (nicht nur für Volltextindizes) verwendet werden.
Der XRANK-Operator akzeptiert mindestens zwei Operanden. Bei den Operanden kann es sich um einzelne Begriffe oder einen beliebigen gültigen FQL-Unterausdruck handeln.
Der erste Operand ist der Hauptabfrageausdruck für die Suche nach einer Übereinstimmung. Er trägt wie jeder Begriff oder Ausdruck zum Rückruf oder zur Genauigkeit bei.
Die nachfolgenden Operanden haben keine Auswirkungen auf die Gesamtanzahl der übereinstimmenden Elemente. Sie wirken sich jedoch derart auf die dynamische Rangfolge aus, dass für Elemente, die innerhalb der folgenden Operanden mit Ausdrücken übereinstimmen, die Rangfolge innerhalb des Resultsets heraufgestuft wird. Bei mehr als einem nachfolgenden Operanden wird bei einer Übereinstimmung mit jedem Operanden ein Heraufstufungswert n der Gesamtrangfolge des Elements hinzugefügt.
Dieser Operator dient zum Heraufstufen des dynamischen Rangs gemäß bestimmter gefundener Textbegriffe an Stellen, an denen diese Begriffe keine Übereinstimmung geliefert haben.
Der XRANK-Operator kann für Volltextindizes und verwaltete Eigenschaften verwendet werden.
XRANK unterstützt die unäre Heraufstufung. xrank(a,boost=n) fügt den Heraufstufungswert n allen Elementen hinzu, die mit a übereinstimmen. Mithilfe dieser Syntax können Sie mehrere XRANK-Ausdrücke mithilfe des Operators AND oder ANY kombinieren.
Syntax
xrank(operand, rank-operand [, rank-operand]* [,boost=n] [,boostall=yes])
Parameter
Parameter |
Wert |
Beschreibung |
---|---|---|
boost |
<numerischer Wert> |
Gibt an, dass die dynamische Rangfolge übereinstimmender Elemente um den angegebenen Wert erhöht wird. Die dynamische Rangfolgenkomponente ist nicht niedriger als null (negative Rangfolgenergebnisse werden nicht unterstützt). Aufgrund der statischen Rangfolgenkomponente können Sie dennoch ein positives Rangfolgenergebnis erhalten. Standard: 100 |
boostall |
yes|no |
Gibt an, ob die Anhebung der dynamischen Rangfolge für Elemente gilt, die noch keine dynamische Rangfolge haben.
Standard: no |
Beispiele
Beispiel 1. Mit dem folgenden Ausdruck werden übereinstimmende Elemente gesucht, für die der standardmäßige Volltextindex entweder "cat" oder "dog" enthält. Mit diesem Ausdruck wird die dynamische Rangfolge jener Elemente, die auch das Wort "thoroughbred" enthalten, angehoben.
xrank(or(cat, dog), thoroughbred)
Beispiel 2. Mit dem folgenden Ausdruck werden übereinstimmende Elemente gesucht, für die der standardmäßige Volltextindex entweder "cat" oder "dog" enthält. Mit diesem Ausdruck wird die dynamische Rangfolge jener Elemente, die das Wort "thoroughbred" enthalten, anstelle des Standardwerts von 100 um den Wert 500 angehoben. Dies gilt auch für Elemente, die vorher keine Rangfolge hatten.
xrank(or(cat, dog), thoroughbred, boost=500, boostall=yes)
Siehe auch
Konzepte
Übersicht über die FAST Search-Abfrageintegration
Referenz zur FAST Query Language-Syntax (FQL)