Condividi tramite


Clausola WHERE (Windows Search)

Le condizioni che determinano se un documento viene incluso nei risultati restituiti dalla query vengono specificate dalla clausola WHERE. Al livello più alto, la sintassi della clausola WHERE è composta da due parti:

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

La parte facoltativa <group_alias> della clausola semplifica le query complesse assegnando un alias a un gruppo di una o più colonne. In questo modo è possibile migliorare la leggibilità delle query complesse che eseguono la ricerca delle stesse informazioni tra più colonne specificate dagli URL. Per altre informazioni sugli alias di gruppo, vedere WITH -- AS Group Alias Predicate.

La <parte della condizione> di ricerca della clausola WHERE è uno o più predicati di ricerca che specificano i criteri di corrispondenza per la ricerca. I predicati di ricerca sono espressioni che assergono alcuni fatti su un valore.

Il risultato di una condizione di ricerca è un valore booleano, true se il documento soddisfa le condizioni di ricerca specificate oppure FALSE in caso contrario. Se il risultato è TRUE, viene restituito il documento. Se il risultato è FALSE, il documento non viene restituito. Ai documenti restituiti in una query di Microsoft Windows Search vengono assegnati valori di classificazione in base alla loro corrispondenza con le condizioni di ricerca. Ognuna delle condizioni di ricerca delle query può includere una clausola RANKBY che supporta la modifica dei valori di classificazione restituiti.

La funzione ReuseWhere rende più query che usano alcune delle stesse condizioni di ricerca più efficienti. La clausola WHERE in una query specifica il set di elementi corrispondenti in una query. Le query successive possono condividere il lavoro eseguito per l'analisi precedente usando la funzione ReuseWhere nella nuova clausola WHERE della query.

Predicati di ricerca

Una condizione di ricerca è costituita da uno o più predicati o condizioni di ricerca che descrivono ciò che l'utente sta cercando (ad esempio, WHERE System.DateCreated >'2006-04-19'). I predicati di ricerca possono essere combinati usando gli operatori logici AND, OR o NOT. L'operatore unario facoltativo NOT può essere usato solo con AND e solo per negare il valore logico di un predicato o di una condizione di ricerca. È possibile usare le parentesi per raggruppare e annidare termini logici.

Nella tabella seguente viene illustrato l'ordine di precedenza per gli operatori logici.

Ordine (precedenza) Operatore logico
Primo (più alto) NOT
Secondo AND
Terzo (più basso) OR

 

Gli operatori logici dello stesso tipo sono associativi e non esiste alcun ordine di calcolo specificato. Ad esempio, ( A AND B) AND (C AND D) possono essere calcolati ( A AND D) AND (B AND C) e (B AND C) senza alcuna modifica nel risultato logico.

Importante

Risposta errata: WHERE NOT CONTAINS ('computer')

Risposta esatta: WHERE CONTAINS ('software') AND NOT CONTAINS ('computer')

 

Nelle query complesse è consigliabile porre maggiore attenzione sulle corrispondenze in alcune colonne rispetto ad altre. Ad esempio, durante la ricerca di documenti che illustrano "progettazione software", la ricerca del termine di ricerca nel titolo del documento è più probabile che sia una corrispondenza valida rispetto alla ricerca delle singole parole nel testo del documento. Per influenzare la classificazione dei documenti in questo modo, il linguaggio di query di Microsoft Windows Search supporta la ponderazione delle condizioni di ricerca. Per altre informazioni sulla ponderazione delle colonne, vedere predicato CONTAINS e predicato FREETEXT.

In Windows Search sono disponibili tre gruppi di predicati di ricerca: ricerche full-text, non full-text e depth delle cartelle. I predicati di ricerca full-text corrispondono in genere al significato del contenuto, del titolo e di altre colonne e supportano la corrispondenza linguistica (ad esempio, forme di parole alternative, frasi e ricerca di prossimità). Al contrario, i predicati di ricerca non full-text corrispondono al valore delle colonne specificate e non includono alcuna elaborazione linguistica speciale, ma in diversi casi offrono criteri di ricerca basati su caratteri. I predicati profondità cartella limitano l'ambito di ricerca a un percorso specificato.

Nota

Se la query restituisce un documento perché un predicato non full-text restituisce TRUE per tale documento, il valore di classificazione viene calcolato come 1000. L'uso della funzione di coercizione della classificazione può modificare il valore di rango.

 

Le tabelle seguenti descrivono i predicati di ricerca full-text, non full-text e depth della cartella.

Predicato full-text Descrizione
CONTAINS Supporta ricerche complesse per i termini nelle colonne di testo del documento , ad esempio titolo, contenuto. Può cercare forme inflected dei termini di ricerca, verificare la prossimità dei termini ed eseguire confronti logici. I termini di ricerca possono includere caratteri jolly.
FREETEXT Cerca i documenti che corrispondono al significato della frase di ricerca. Le parole correlate e le frasi simili corrispondono, con la colonna rank calcolata in base alla corrispondenza tra il documento e la frase di ricerca. I termini di ricerca non possono includere caratteri jolly.

 

Predicato non full-text Descrizione
LIKE I valori di colonna vengono confrontati usando criteri di ricerca semplici con caratteri jolly.
Confronto tra valori letterali I valori di colonna vengono confrontati con string, date, timestamp, numeric e altri valori letterali. Questo predicato supporta l'uguaglianza e le disuguaglianze, ad esempio maggiore e minore di.
Confronti tra valori multivalore (ARRAY) Le colonne multivalore vengono confrontate con una matrice multivalore di valori letterali.
NULL I valori di colonna non definiti per il documento possono essere rilevati usando il predicato NULL .

 

Profondità cartella Descrizione
AMBITO Esegue un attraversamento profondo del percorso specificato, inclusa la cartella specifica e tutte le sottocartelle.
DIRECTORY Esegue un attraversamento superficiale del percorso specificato, cercando solo la cartella specifica.

 

Esempio

Per esempi della clausola WHERE, vedere i singoli argomenti del predicato collegati nella tabella precedente.

Riferimento

Funzione ReuseWhere

Proprietà del set di righe

Clausola FROM

Panoramica della sintassi SQL di ricerca

WITH -- Predicato alias gruppo AS

Predicati SCOPE e DIRECTORY

Clausola RANK BY

Informazioni concettuali

Predicati full-text

Predicati non full-text