Condividi tramite


Clausola RANK BY

I risultati di una query includono sia le righe restituite dalla query che un valore di rango per ogni riga se la colonna rank è 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 i risultati di classificazione più significativi, 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 al 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 le 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 apportate ai valori di classificazione devono tenere conto di 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.

Weight, funzione

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 di peso per impostare un nuovo valore di rango.

Nell'esempio seguente la funzione WEIGHT fornisce ai documenti 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 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 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
ASSOLUTO Il valore rank restituito è il valore specificato nel valore di coercizione. da 0 a 1000
AGGIUNGERE Il valore rank restituito è la somma del valore di classificazione non elaborato e del valore di coercizione specificato. Da 0.001 a 1.0
MOLTIPLICARE Il valore rank 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 al contempo di un quarto il rango dei 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 )