RANK BY-Klausel

Die Ergebnisse einer Abfrage enthalten sowohl die von der Abfrage zurückgegebenen Zeilen als auch einen Rangwert für jede Zeile, wenn die Rangspalte in der SELECT-Klausel enthalten ist. Die Rangwerte werden von der Suchmaschine berechnet und als ganze Zahlen im Bereich 0 bis 1000 zurückgegeben. Um die Rangergebnisse aussagekräftiger zu machen, kann die Abfrage steuern, wie rohe Rangwerte in der RANK BY-Klausel berechnet werden.

Dieses Thema ist wie folgt organisiert:

RANK BY-Klausel

Die Syntax für die RANK BY-Klausel lautet wie folgt:

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

Die RANK BY-Klausel wird auf den unmittelbar davor stehenden search_condition angewendet und gibt effektiv einen niedrigeren oder höheren Rang für Zeilen an, die von dieser Suchbedingung zurückgegeben werden, als zeilen, die von einer anderen Suchbedingung zurückgegeben werden. Die Klammern, die den search_condition umgibt, sind erforderlich. Die Klammern um die Rangspezifikation sind optional.

Auf eine einzelne Bedingung können mehrere RANK BY-Klauseln angewendet werden. Sie können zusätzliche RANK BY-Klauseln nacheinander in Klammern einschließen.

Hinweis

Volltext-Prädikate geben Rangwerte im Bereich von 0 bis 1000 zurück. Rangwerte für alle Dokumente, die von einem Nicht-Volltext-Prädikat übereinstimmen, sind 1000. Änderungen an den Rangwerten sollten diese Informationen berücksichtigen.

 

Der rank_specification Teil der RANKBY-Klausel identifiziert eine oder mehrere Funktionen, die auf die Rangwerte angewendet werden sollen. Die WEIGHT-Funktion wendet einen Multiplikator auf den Unformatierten Rangwert für eine zurückgegebene Zeile an. Je kleiner der Multiplikator, desto niedriger ist der resultierende Rangwert. Die COERCION-Funktion kann verwendet werden, um einen bestimmten Rangwert für eine zurückgegebene Zeile zu multiplizieren, hinzuzufügen oder festzulegen. Jede Rangspezifikation kann entweder null oder eine WEIGHT-Funktion und null oder mehr COERCION-Funktionen enthalten. Wenn sowohl DIE FUNKTIONEN WEIGHT als auch COERCION in einer RANK BY-Klausel enthalten sind, muss die WEIGHT-Funktion zuerst verwendet werden.

WEIGHT-Funktion

Die Syntax der WEIGHT-Funktion lautet:

WEIGHT ( <weight_multipler> ) 

Der Multiplikator muss ein Dezimalwert von 0,001 bis 1,000 sein. Der unformatierte Rangwert, der vom Suchbedingungs-Prädikat zurückgegeben wird, wird mit dem Gewichtungsmultiplikator multipliziert, um einen neuen Rangwert festzulegen.

Im folgenden Beispiel gibt die WEIGHT-Funktion Dokumenten mit dem Wort "Theresa" im Feld System.Document.LastAuthor die Hälfte des Rangwerts von Dokumenten mit "Theresa" im Feld System.Author zu:

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

 

Hinweis

Die Features FÜR die Spaltengewichtung des CONTAINS- und FREETEXT-Prädikats unterstützen ein Kurzformat, das einen Doppelpunkt zwischen dem Suchbegriff und dem Multiplikator ("software":0.25) verwendet. Die RANK BY-Klausel unterstützt das verkürzte Formular nicht.

 

Bei verwendung von RANK BY WEIGHT gibt es eine Einschränkung: Sie funktioniert nicht mit CONTAINS-Klauseln, die boolesche Bedingungen verwenden. Das folgende Beispiel ist beispielsweise nicht zulässig:

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

COERCION-Funktion

Die Rangkoerzfunktion kann verwendet werden, um den zurückgegebenen Rangwert durch Addition oder Multiplikation oder durch Zuweisen eines bestimmten Werts zu ändern.

Die Syntax der COERCION-Funktion lautet:

COERCION ( <coercion_operation> , <coercion_value> )

Der Coercion-Wert ist ein ganzzahliger Wert.

In der folgenden Tabelle werden die verfügbaren Einstellungen für den Coercion-Vorgang beschrieben.

Zwangsoperation BESCHREIBUNG Wertebereich
ABSOLUTE Der zurückgegebene Rangwert ist der im Coercion-Wert angegebene Wert. 0 bis 1000
ADD Der zurückgegebene Rangwert ist die Summe des rohen Rangwerts und des angegebenen Coercion-Werts. 0,001 bis 1,0
MULTIPLIZIEREN Der zurückgegebene Rangwert ist das Produkt des Rohwerts und des angegebenen Coercion-Werts. 0,001 bis 1,0

 

 

Wichtig

Die Suche kann Rangwerte nur im Bereich von 0 bis 1000 zurückgeben.

 

 

Im folgenden Beispiel wird die COERCION-Funktion verwendet, um alle Dokumente mit "Computer" im Titel auf den Rang 1000 festzulegen, während der Rang der Dokumente, die sowohl "Computer" als auch "Software" im Titel enthalten, um ein Viertel reduziert wird.

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