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 der höchsten Ebene gibt es zwei Teile der WHERE-Klauselsyntax:
...WHERE [<group_aliases>] <search_condition>
...WHERE ReuseWhere(<WHEREID>)
Der optionale <_ Gruppenalias> Teil der -Klausel vereinfacht komplexe Abfragen, indem einer Gruppe von einer oder mehreren Spalten ein Alias zugewiesen wird. Dies kann die Lesbarkeit komplexer Abfragen verbessern, die in mehreren durch URLs angegebenen Spalten nach denselben Informationen suchen. Weitere Informationen zu Gruppenaliasen finden Sie unter WITH -- AS Group Alias Predicate.
Der Teil der WHERE-Klausel ist ein oder mehrere Suchprädikate, die Übereinstimmungskriterien für die Suche angeben. Bei Suchprädikaten handelt es sich um Ausdrücke, die eine Tatsache zu einem Bestimmten Wert bestätigen.
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 entsprechend ihrer Übereinstimmung mit den Suchbedingungen zugewiesen. Jede der Abfragesuchbedingungen kann eine RANKBY-Klausel enthalten, die das Ändern der zurückgegebenen Rangwerte unterstützt.
Die ReuseWhere-Funktion macht mehrere Abfragen effizienter, die einige der gleichen Suchbedingungen verwenden. Die WHERE-Klausel in einer Abfrage gibt den Satz von Elementen an, die in einer Abfrage übereinstimmen. Nachfolgende Abfragen können die Für die vorherige Auswertung ausgeführte Arbeit mithilfe der ReuseWhere-Funktion in der neuen WHERE-Abfrageklausel freigeben.
Suchprädikate
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'). Suchprä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 zum Negieren des logischen Werts eines Prädikats oder einer Suchbedingung verwendet werden. Sie können logische Begriffe mithilfe von Klammern gruppieren und schachteln.
Die folgende Tabelle zeigt die Rangfolge für die logischen Operatoren.
| Reihenfolge (Rangfolge) | Logischer Operator |
|---|---|
| Erste (höchste) | NOT |
| Second | AND |
| Dritte (niedrigste) | OR |
Logische Operatoren desselben Typs sind assoziativ, und es gibt keine angegebene Berechnungsreihenfolge. Beispielsweise können (A UND B) AND (C UND D) (A UND D) UND (B UND C) ohne Änderung des logischen Ergebnisses berechnet werden.
Wichtig
Falsch: WHERE NOT CONTAINS ('computer')
Richtig: WHERE CONTAINS ('software') AND NOT CONTAINS ('computer')
Bei komplexen Abfragen sollten Sie übereinstimmungen in einigen Spalten mehr Aufmerksamkeit als in anderen spalten. Wenn Sie beispielsweise nach Dokumenten suchen, die "Softwareentwurf" besprechen, ist es wahrscheinlicher, den Suchbegriff im Dokumenttitel zu finden, als die einzelnen Wörter im Text des Dokuments zu finden. Um die Rangfolge von Dokumenten auf diese Weise zu beeinflussen, unterstützt die Abfragesprache Microsoft Windows Search die Gewichtung der Suchbedingungen. Weitere Informationen zur Spaltengewichtung finden Sie unter CONTAINS-Prädikat und FREETEXT-Prädikat.
Es gibt drei Gruppen von Suchprädikaten in Windows Search: Volltext-, Nicht-Volltext- und Ordnertiefesuchvorgänge. Volltextsuchprädikate stimmen in der Regel mit der Bedeutung von Inhalt, Titel und anderen Spalten überein und unterstützen linguistische Übereinstimmungen (z. B. alternative Wortformen, Ausdrücke und Näherungssuche). Im Gegensatz dazu stimmen Prädikate ohne Volltextsuche mit dem Wert der angegebenen Spalten überein und enthalten keine spezielle linguistische Verarbeitung, bieten jedoch in mehreren Fällen zeichenbasierte Musterübereinstimmungen. Ordnertiefeprädikate beschränken den Suchbereich auf einen angegebenen Pfad.
Hinweis
Wenn die Abfrage ein Dokument zurückgibt, weil ein Nicht-Volltextprädikat für dieses Dokument zu TRUE ausgewertet wird, wird der Rangwert als 1000 berechnet. Mithilfe der Rangfolgekoersionsfunktion kann der Rangwert geändert werden.
In den folgenden Tabellen werden die Prädikate für die Suche nach Volltext, Nicht-Volltext und Ordnertiefe beschrieben.
| Volltextprädikat | BESCHREIBUNG |
|---|---|
| CONTAINS | Unterstützt komplexe Suchen nach Begriffen in Dokumenttextspalten (z. B. Titel, Inhalt). Kann nach inflektierten Formen der Suchbegriffe suchen, die Nähe der Begriffe testen und logische Vergleiche durchführen. Suchbegriffe können Platzhalterzeichen enthalten. |
| FREETEXT | Sucht nach Dokumenten, die der Bedeutung des Suchbegriffs entsprechen. Verwandte Wörter und ähnliche Ausdrücke stimmen überein, wobei die Rangfolgespalte basierend darauf berechnet wird, wie genau das Dokument mit dem Suchbegriff übereinstimmt. Suchbegriffe dürfen keine Platzhalterzeichen enthalten. |
| Nicht-Volltextprädikat | BESCHREIBUNG |
|---|---|
| LIKE | Spaltenwerte werden mithilfe eines einfachen Musterabgleichs mit Platzhalterzeichen verglichen. |
| Literalwertvergleich | Spaltenwerte werden mit Zeichenfolgen-, Datums-, Zeitstempel-, numerischen und anderen Literalwerten verglichen. Dieses Prädikat unterstützt Gleichheit und Gleichheit, z. B. größer als und kleiner 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 |
|---|---|
| Umfang | Führt einen tiefen Durchlauf des angegebenen Pfads aus, einschließlich des spezifischen Ordners und aller Unterordner. |
| Verzeichnis | Führt einen flachen Durchlauf des angegebenen Pfads durch und durchsucht nur den bestimmten Ordner. |
Beispiele
Beispiele für die WHERE-Klausel finden Sie in den einzelnen Prädikatthemen, die in der vorherigen Tabelle verknüpft sind.