Freigeben über


WHERE-Klausel (Windows Search)

Die Bedingungen, die bestimmen, ob ein Dokument in den von der Abfrage zurückgegebenen Ergebnissen enthalten ist, werden von der WHERE-Klausel angegeben. Auf höchster Ebene gibt es zwei Teile der WHERE-Klauselsyntax:

...WHERE [<group_aliases>] <search_condition>
...WHERE ReuseWhere(<WHEREID>)

Der optionale <group_alias> Teil der Klausel vereinfacht komplexe Abfragen, indem einer Gruppe von mindestens einer Spaltengruppe ein Alias zugewiesen wird. Dies kann die Lesbarkeit komplexer Abfragen verbessern, die nach denselben Informationen in mehreren Spalten suchen, die durch URLs angegeben sind. Weitere Informationen zu Gruppenalias finden Sie unter WITH -- AS Group Alias Predicate.

Der <Teil der Suchbedingung> der WHERE-Klausel ist ein oder mehrere Such-Prädikate, die übereinstimmende Kriterien für die Suche angeben. Such-Prädikate sind Ausdrücke, die eine Tatsache über einen Wert behaupten.

Das Ergebnis einer Suchbedingung ist ein boolescher Wert, entweder TRUE , wenn das Dokument die angegebenen Suchbedingungen erfüllt, oder FALSE , wenn dies nicht der Fall ist. Wenn das Ergebnis TRUE ist, wird das Dokument zurückgegeben. Wenn das Ergebnis FALSE ist, wird das Dokument nicht zurückgegeben. Dokumenten, die in einer Microsoft Windows Search-Abfrage zurückgegeben werden, werden Rangwerte zugewiesen, je nachdem, wie sie mit den Suchbedingungen übereinstimmen. Jede Abfragesuchbedingung kann eine RANKBY-Klausel enthalten, die das Ändern der zurückgegebenen Rangwerte unterstützt.

Die ReuseWhere-Funktion macht mehrere Abfragen, die einige der gleichen Suchbedingungen verwenden, effizienter. Die WHERE-Klausel in einer Abfrage gibt den Satz von Elementen an, die in einer Abfrage übereinstimmen. Nachfolgende Abfragen können die arbeit freigeben, die für die vorherige Auswertung ausgeführt wurde, indem sie die ReuseWhere-Funktion in der WHERE-Klausel der neuen Abfrage verwenden.

Prädikate suchen

Eine Suchbedingung besteht aus einem oder mehreren Prädikaten oder Suchbedingungen, die beschreiben, wonach der Benutzer sucht (z. B. WHERE System.DateCreated >'2006-04-19'). Such-Prädikate können mithilfe der logischen Operatoren AND, OR oder NOT kombiniert werden. Der optionale unäre Operator NOT kann nur mit AND und nur verwendet werden, um den logischen Wert eines Prädikats oder einer Suchbedingung zu negieren. Sie können Klammern verwenden, um logische Begriffe zu gruppieren und zu schachteln.

Die folgende Tabelle zeigt die Rangfolge für die logischen Operatoren.

Reihenfolge (Rangfolge) Logischer Operator
First (höchste) NOT
Second AND
Dritter (niedrigster Wert) OR

 

Logische Operatoren desselben Typs sind assoziativ, und es gibt keine angegebene Berechnungsreihenfolge. Beispielsweise können (A UND B) AND (C UND D) UND (B UND C) ohne Änderung des logischen Ergebnisses berechnet werden (A UND D) UND (B UND C).

Wichtig

Falsch: WHERE NOT CONTAINS ('computer')

Richtig: WHERE CONTAINS ('software') AND NOT CONTAINS ('computer')

 

Bei komplexen Abfragen sollten Sie in einigen Spalten möglicherweise mehr Wert auf Übereinstimmungen legen als in anderen. Wenn Sie beispielsweise nach Dokumenten suchen, in denen "Softwaredesign" erläutert wird, ist die Suche nach dem Suchbegriff im Dokumenttitel wahrscheinlicher als die Suche nach den einzelnen Wörtern im Text des Dokuments. Um die Rangfolge von Dokumenten auf diese Weise zu beeinflussen, unterstützt die Microsoft Windows Search-Abfragesprache die Gewichtung der Suchbedingungen. Weitere Informationen zur Spaltengewichtung finden Sie unter CONTAINS-Prädikat und FREETEXT-Prädikat.

Es gibt drei Gruppen von Such-Prädikaten in Windows Search: Volltextsuche, Nicht-Volltextsuche und Ordnertiefe. Volltextsuche-Prädikate entsprechen in der Regel der Bedeutung des Inhalts, des Titels und anderer Spalten und unterstützen linguistische Übereinstimmungen (z. B. alternative Wortformen, Ausdrücke und Näherungssuche). Im Gegensatz dazu stimmen Prädikate für die Nicht-Volltextsuche mit dem Wert der angegebenen Spalten überein und enthalten keine spezielle linguistische Verarbeitung, bieten jedoch in mehreren Fällen einen zeichenbasierten Musterabgleich. Ordnertiefe-Prädikate beschränken den Suchbereich auf einen angegebenen Pfad.

Hinweis

Wenn die Abfrage ein Dokument zurückgibt, weil ein Prädikat ohne Volltext für dieses Dokument als TRUE ausgewertet wird, wird der Rangwert als 1000 berechnet. Mithilfe der Funktion Rangkoerz kann der Rangwert geändert werden.

 

In den folgenden Tabellen werden die Prädikate der Volltextsuche, der Nicht-Volltext- und der Ordnertiefe beschrieben.

Volltext-Prädikat BESCHREIBUNG
CONTAINS Unterstützt komplexe Suchvorgänge nach Begriffen in Dokumenttextspalten (z. B. Titel, Inhalt). Kann nach inflected Formen der Suchbegriffe suchen, die Nähe der Begriffe testen und logische Vergleiche durchführen. Suchbegriffe können Wildcardzeichen enthalten.
FREETEXT Sucht nach Dokumenten, die der Bedeutung des Suchbegriffs entsprechen. Verwandte Wörter und ähnliche Ausdrücke werden übereinstimmen, wobei die Rangspalte basierend darauf berechnet wird, wie eng das Dokument mit dem Suchbegriff übereinstimmt. Suchbegriffe dürfen keine Feldhalterzeichen enthalten.

 

Prädikat ohne Volltext BESCHREIBUNG
LIKE Spaltenwerte werden mithilfe eines einfachen Musterabgleichs mit Feldhalterzeichen verglichen.
Literalwertvergleich Spaltenwerte werden mit Zeichenfolgen-, Datums-, Zeitstempel-, numerischen und anderen Literalwerten verglichen. Dieses Prädikat unterstützt Gleichheit und Ungleichheiten wie größer als und weniger als.
Mehrwertige Vergleiche (ARRAY) Mehrwertige Spalten werden mit einem mehrwertigen Array von Literalen verglichen.
NULL Spaltenwerte, die für das Dokument nicht definiert sind, können mithilfe des NULL-Prädikats erkannt werden.

 

Ordnertiefe BESCHREIBUNG
SCOPE Führt eine tiefe Durchquerung des angegebenen Pfads durch, einschließlich des spezifischen Ordners und aller Unterordner.
VERZEICHNIS Führt einen flachen Durchlauf des angegebenen Pfads durch, wobei nur der bestimmte Ordner durchsucht wird.

 

Beispiele

Beispiele für die WHERE-Klausel finden Sie in den einzelnen Prädikatthemen, die in der vorherigen Tabelle verknüpft sind.

Referenz

ReuseWhere-Funktion

Rowset-Eigenschaften

FROM-Klausel

Übersicht über die SQL-Syntax suchen

WITH -- AS Group Alias Predicate

SCOPE- und DIRECTORY-Prädikate

RANK BY-Klausel

Konzept

Volltext-Prädikate

Prädikate ohne Volltext