WHERE-component (Windows Search)

De voorwaarden die bepalen of een document wordt opgenomen in de resultaten die door de query worden geretourneerd, worden opgegeven door de WHERE-component. Op het hoogste niveau zijn er twee delen van de syntaxis van de WHERE-component:

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

Het optionele <group_alias> gedeelte van de component vereenvoudigt complexe query's door een alias toe te wijzen aan een groep van een of meer kolommen. Dit kan de leesbaarheid verbeteren van complexe query's die zoeken naar dezelfde informatie in meerdere kolommen die zijn opgegeven door URL's. Zie WITH -- AS Group Alias Predicatevoor meer informatie over groepsaliassen.

De <zoekvoorwaarde> gedeelte van de WHERE-component is een of meer zoekpredicaten die overeenkomende criteria voor de zoekopdracht opgeven. Zoekpredicaten zijn expressies die een bepaald feit over een bepaalde waarde bevestigen.

Het resultaat van een zoekvoorwaarde is een Booleaanse waarde, ofwel TRUE als het document voldoet aan de opgegeven zoekvoorwaarden of FALSE als dat niet het geval is. Als het resultaat TRUE, wordt het document geretourneerd. Als het resultaat ONWAAR, wordt het document niet geretourneerd. Aan documenten die worden geretourneerd in een Microsoft Windows Search-query, worden rangschikkingswaarden toegewezen op basis van hoe goed deze overeenkomen met de zoekvoorwaarden. Elk van de zoekvoorwaarden voor query's kan een RANKBY- component bevatten die ondersteuning biedt voor het wijzigen van de geretourneerde rangschikkingswaarden.

De functie ReuseWhere maakt meerdere query's die gebruikmaken van een aantal van dezelfde zoekvoorwaarden efficiënter. Met de WHERE-component in een query geeft u de set items op die overeenkomen met een query. Volgende query's kunnen het werk dat is uitgevoerd voor de vorige evaluatie delen met behulp van de functie ReuseWhere in de nieuwe query WHERE-component.

Zoekpredicaten

Een zoekvoorwaarde bestaat uit een of meer predicaten of zoekvoorwaarden die beschrijven waarnaar de gebruiker zoekt (bijvoorbeeld WHERE System.DateCreated >'2006-04-19'). Zoekpredicaten kunnen worden gecombineerd met behulp van de logische operatoren AND, OFof NIET. De optionele unaire operator NOT kan alleen worden gebruikt met AND- en alleen om de logische waarde van een predicaat of zoekvoorwaarde te ontheffen. U kunt haakjes gebruiken om logische termen te groeperen en te nesten.

In de volgende tabel ziet u de volgorde van prioriteit voor de logische operators.

Volgorde (prioriteit) Logische operator
Eerste (hoogste) NIET
Tweede AND-
Derde (laagste) OR-

 

Logische operatoren van hetzelfde type zijn associatief en er is geen opgegeven berekeningsvolgorde. Bijvoorbeeld: (A AND B) AND (C AND D) kan worden berekend (A AND D) AND (B AND C) zonder dat het logische resultaat wordt gewijzigd.

Belangrijk

Onjuist: WHERE NOT CONTAINS ('computer')

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

 

In complexe query's wilt u mogelijk meer nadruk leggen op overeenkomsten in sommige kolommen dan in andere. Wanneer u bijvoorbeeld zoekt naar documenten die 'softwareontwerp' bespreken, is het zoeken naar de zoekterm in de documenttitel waarschijnlijk een goede overeenkomst dan het vinden van de afzonderlijke woorden in de tekst van het document. Om de rangschikking van documenten op deze manier te beïnvloeden, ondersteunt de Microsoft Windows Search-querytaal de weging van de zoekvoorwaarden. Zie CONTAINS Predicate en FREETEXT Predicatevoor meer informatie over kolomdikte.

Er zijn drie groepen zoekpredicaten in Windows Search: zoekopdrachten in volledige tekst, niet-volledige tekst en zoekacties in mappen. Zoekopdrachten in volledige tekst komen meestal overeen met de betekenis van de inhoud, titel en andere kolommen en ondersteunen taalkundige overeenkomsten (bijvoorbeeld alternatieve woordvormen, woordgroepen en zoeken in nabijheid). Daarentegen komen niet-volledige zoekpredicaten overeen met de waarde van de opgegeven kolommen en bevatten geen speciale taalkundige verwerking, maar bieden in verschillende gevallen op tekens gebaseerde patroonkoppeling. Mapdieptepredicaten beperken het zoekbereik tot een opgegeven pad.

Notitie

Als de query een document retourneert omdat een predicaat zonder volledige tekst resulteert in TRUE voor dat document, wordt de rangschikkingswaarde berekend als 1000. Met behulp van de functie rangschikkingsfunctie de rangschikkingswaarde kan wijzigen.

 

In de volgende tabellen worden de zoekpredicaten voor volledige tekst, niet-volledige tekst en zoekpredicaten voor mapdiepte beschreven.

Predicaat voor volledige tekst Beschrijving
BEVAT Ondersteunt complexe zoekopdrachten naar termen in documenttekstkolommen (bijvoorbeeld titel, inhoud). Kan zoeken naar inflecteerde vormen van de zoektermen, testen op nabijheid van de termen en logische vergelijkingen uitvoeren. Zoektermen kunnen jokertekens bevatten.
FREETEXT- Zoekt naar documenten die overeenkomen met de betekenis van de zoekterm. Gerelateerde woorden en vergelijkbare woordgroepen komen overeen, waarbij de rangschikkingskolom wordt berekend op basis van de mate waarin het document overeenkomt met de zoekterm. Zoektermen kunnen geen jokertekens bevatten.

 

Predicaat zonder volledige tekst Beschrijving
LIKE- Kolomwaarden worden vergeleken met eenvoudige patroonkoppelingen met jokertekens.
vergelijking van letterlijke waarden Kolomwaarden worden vergeleken met tekenreeks, datum, tijdstempel, numeriek en andere letterlijke waarden. Dit predicaat ondersteunt gelijkheid en ongelijkheden, zoals groter dan en kleiner dan.
vergelijkingen met meerdere waarden (MATRIX) Kolommen met meerdere waarden worden vergeleken met een matrix met meerdere waarden van letterlijke waarden.
NULL- Kolomwaarden die niet zijn gedefinieerd voor het document kunnen worden gedetecteerd met behulp van het NULL- predicaat.

 

Mapdiepte Beschrijving
BEREIK Voert een diepe doorkruising van het opgegeven pad uit, inclusief de specifieke map en alle submappen.
DIRECTORY- Voert een ondiepe doorkruising van het opgegeven pad uit, en doorzoekt alleen de specifieke map.

 

Voorbeelden

Zie de afzonderlijke predicaatonderwerpen in de voorgaande tabel voor voorbeelden van de WHERE-component.

functie ReuseWhere

eigenschappen van rijsets

FROM-component

overzicht van de search-SQL-syntaxis

WITH -- AS-groepsalias predicaat

SCOPE- en DIRECTORY-predicaten

RANK BY-component

conceptuele

Full-Text predicaten

Niet-Full-Text Predicaten