Clausola RANK BY

I risultati di una query includono sia le righe restituite dalla query che un valore di classificazione per ogni riga se la colonna di classificazione è inclusa nella clausola SELECT. I valori di classificazione vengono calcolati dal motore di ricerca e vengono restituiti come numeri interi nell'intervallo da zero a 1000. Per rendere più significativi i risultati della classificazione, la query può controllare il modo in cui i valori di classificazione non elaborati vengono calcolati nella clausola RANK BY.

Questo argomento è organizzato come segue:

Clausola RANK BY

La sintassi per la clausola RANK BY è la seguente:

WHERE ( <search_condition> ) 
RANK BY [ ( ] <rank_specification> [ ) ]

La clausola RANK BY viene applicata alla search_condition immediatamente precedente, specificando in modo efficace un rango inferiore o superiore per le righe restituite da tale condizione di ricerca rispetto alle righe restituite da un'altra condizione di ricerca. Sono necessarie le parentesi che circondano il search_condition. Le parentesi che circondano la specifica di classificazione sono facoltative.

È possibile applicare più clausole RANK BY a una singola condizione. È possibile includere clausole RANK BY aggiuntive una dopo l'altra usando parentesi.

Nota

I predicati full-text restituiscono valori di classificazione nell'intervallo da 0 a 1000. I valori di classificazione per tutti i documenti corrispondenti a un predicato non full-text sono 1000. Le modifiche ai valori di classificazione devono tenere in considerazione queste informazioni.

 

La parte rank_specification della clausola RANKBY identifica una o più funzioni da applicare ai valori di classificazione. La funzione WEIGHT applica un moltiplicatore al valore di classificazione non elaborato per una riga restituita. Minore è il moltiplicatore, minore è il valore di rango risultante. La funzione COERCION può essere usata per moltiplicare, aggiungere o impostare un valore di rango specifico per una riga restituita. Ogni specifica di classificazione può includere zero o una funzione WEIGHT e zero o più funzioni COERCION. Se entrambe le funzioni WEIGHT e COERCION sono incluse in una clausola RANK BY, la funzione WEIGHT deve essere prima.

Funzione WEIGHT

La sintassi della funzione WEIGHT è:

WEIGHT ( <weight_multipler> ) 

Il moltiplicatore deve essere un decimale compreso tra 0,001 e 1,000. Il valore di classificazione non elaborato restituito dal predicato della condizione di ricerca viene moltiplicato per il moltiplicatore peso per impostare un nuovo valore di rango.

Nell'esempio seguente la funzione WEIGHT fornisce documenti con la parola "Theresa" nel campo System.Document.LastAuthor metà del valore di classificazione dei documenti con "Theresa" nel campo System.Author:

WHERE CONTAINS ( System.Author,'"Theresa"' ) 
         RANK BY WEIGHT ( 1.000 )
      OR
      CONTAINS ( System.Document.LastAuthor,'"Theresa"' ) 
         RANK BY WEIGHT ( 0.500 ) 

 

Nota

Le funzionalità di ponderazione della colonna del predicato CONTAINS e FREETEXT supportano un formato abbreviato usando due punti tra il termine di ricerca e il moltiplicatore ("software":0.25). La clausola RANK BY non supporta il formato abbreviato.

 

Esiste una limitazione quando si usa RANK BY WEIGHT: non funziona con le clausole CONTAINS che usano condizioni booleane; Ad esempio, l'esempio seguente non è consentito:

CONTAINS ( System.Author,'"Theresa" OR "Teresa"' ) RANK BY WEIGHT ( 0.400 )

Funzione COERCION

La funzione di coercizione di classificazione può essere usata per modificare il valore di rango restituito mediante addizione o moltiplicazione o assegnando un valore specifico.

La sintassi della funzione COERCION è:

COERCION ( <coercion_operation> , <coercion_value> )

Il valore di coercizione è un valore intero.

Nella tabella seguente vengono descritte le impostazioni dell'operazione di coercizione disponibili.

Operazione di coercizione Descrizione Intervallo di valori
ABSOLUTE Il valore di classificazione restituito è il valore specificato nel valore di coercizione. da 0 a 1000
ADD Il valore di rango restituito è la somma del valore di classificazione non elaborato e del valore di coercizione specificato. Da 0.001 a 1.0
Moltiplicazione Il valore di classificazione restituito è il prodotto del valore di classificazione non elaborato e del valore di coercizione specificato. Da 0.001 a 1.0

 

 

Importante

La ricerca può restituire valori di classificazione solo nell'intervallo compreso tra 0 e 1000.

 

 

Nell'esempio seguente viene utilizzata la funzione COERCION per impostare tutti i documenti con "computer" nel titolo in modo da avere un rango pari a 1000, riducendo di un quarto il rango di documenti contenenti sia "computer" che "software" nel titolo.

WHERE CONTAINS ( System.Title, 'computer' )
        RANK BY COERCION ( ABSOLUTE , 1000 )
        OR 
       CONTAINS ( System.Title, '"computer" AND "software"' )
        RANK BY COERCION ( MULTIPLY, 0.750 )