Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Ergebnisse aus einer Abfrage enthalten sowohl die zeilen, die von der Abfrage zurückgegeben werden, 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 Bewertungsergebnisse 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 die search_condition unmittelbar davor angewendet, wobei eine niedrigere oder höhere Rangfolge für Zeilen angegeben wird, die von dieser Suchbedingung zurückgegeben werden, als Zeilen, die von einer anderen Suchbedingung zurückgegeben werden. Die Klammern, die die search_condition umgeben, sind erforderlich. Die Klammern, die die Rangspezifikation umgeben, sind optional.
Mehrere RANK BY-Klauseln können auf eine einzelne Bedingung angewendet werden. Sie können nacheinander zusätzliche RANK BY-Klauseln mithilfe von Klammern einschließen.
Anmerkung
Volltext-Prädikate geben Rangwerte im Bereich 0 bis 1000 zurück. Rangwerte für alle Dokumente, die mit 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 Funktion WEIGHT wendet einen Multiplikator auf den unformatierten Rangwert für eine zurückgegebene Zeile an. Je kleiner der Multiplikator, desto niedriger 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 Rangangabe kann entweder null oder eine GEWICHTUNGsfunktion und null oder mehr COERCION-Funktionen enthalten. Wenn sowohl WEIGHT- als auch COERCION-Funktionen in einer RANK BY-Klausel enthalten sind, muss die WEIGHT-Funktion zuerst sein.
WEIGHT-Funktion
Die Syntax der Funktion WEIGHT lautet:
WEIGHT ( <weight_multipler> )
Der Multiplikator muss eine Dezimalzahl zwischen 0,001 und 1,000 sein. Der vom Suchbedingungs-Prädikat zurückgegebene rohe Rangwert wird mit dem Gewichtsmultiplikator multipliziert, um einen neuen Rangwert festzulegen.
Im folgenden Beispiel gibt die FUNKTION GEWICHT Dokumente mit dem Wort "Theresa" im Feld "System.Document.LastAuthor" die Hälfte des Rangwerts von Dokumenten mit "Theresa" im Feld "System.Author" an:
WHERE CONTAINS ( System.Author,'"Theresa"' )
RANK BY WEIGHT ( 1.000 )
OR
CONTAINS ( System.Document.LastAuthor,'"Theresa"' )
RANK BY WEIGHT ( 0.500 )
Anmerkung
Die Features "CONTAINS" und "FREETEXT-Prädikatspaltengewichtung" unterstützen ein Kurzformat unter Verwendung eines Doppelpunkts zwischen dem Suchbegriff und dem Multiplizierer ("software":0.25). Die RANK BY-Klausel unterstützt das gekürzte Formular nicht.
Es gibt eine Einschränkung bei Verwendung von RANK BY WEIGHT: Es 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 )
KOERCION-Funktion
Die Rangkoersionsfunktion kann verwendet werden, um den zurückgegebenen Rangwert durch Addition oder Multiplikation oder durch Zuweisen eines bestimmten Werts zu ändern.
Die Syntax der Funktion COERCION lautet:
COERCION ( <coercion_operation> , <coercion_value> )
Der Koersionswert ist ein ganzzahliger Wert.
In der folgenden Tabelle werden die verfügbaren Einstellungen für den Koersionsvorgang beschrieben.
| Koersionsoperation | Beschreibung | Wertbereich |
|---|---|---|
| ABSOLUT | Der zurückgegebene Rangwert ist der im Koersionswert angegebene Wert. | 0 bis 1000 |
| HINZUFÜGEN | Der zurückgegebene Rangwert ist die Summe des rohen Rangwerts und des angegebenen Koersionswerts. | 0 bis 1000 |
| MULTIPLIZIEREN | Der zurückgegebene Rangwert ist das Produkt des rohen Rangwerts und des angegebenen Koersionswerts. | 0 bis 1000 |
| MINMAX | Der zurückgegebene Rangwert ist die lineare Zuordnung des 0-1000-Bewertungsergebnisses des übereinstimmenden Elements aus CONTAINS oder CONTAINSSEMANTIC zwischen den angegebenen Mindest- und maximaler Koersionswerten. | 0 bis 1000 |
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 einen Rang von 1000 festzulegen, während die Rangfolge von Dokumenten, 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 )
Im folgenden Beispiel wird die COERCION-Funktion verwendet, um den rohen Rang von Dokumenten mit dem Begriff "Computer" einem Bereich zwischen 500 und 800 basierend auf ihren semantischen Übereinstimmungen zuzuordnen.
WHERE CONTAINSSEMANTIC('text', *, 'computer', 1033)
OR CONTAINSSEMANTIC('image', *, 'computer', 1033)
RANK BY COERCION(MINMAX, 500, 800)
ORDER BY System.Search.Rank DESC
Merge(<merge_operation>)
Wird mit der RANK BY-Klausel verwendet, um die Rangfolgen aus allen Ergebnissen zu aggregieren, um eine endgültige Rangliste der Seriendruckergebnisse zu generieren.
Die Syntax für die MERGE-Funktion lautet wie folgt:
RANK BY MERGE ( <merge_operation>)
Merge-Vorgänge
In der folgenden Tabelle werden die unterstützten Vorgänge für den parameter merge_operation beschrieben.
| Zusammenführungsvorgang | Beschreibung |
|---|---|
| KONVEXCOMBINATION | Dieser Zusammenführungsalgorithmus sollte ausschließlich verwendet werden, wenn die Abfrage die folgenden Klauseln enthält: CONTAINS (lexikalische Suche), CONTAINSSEMANTIC('Text',...) und CONTAINSSEMANTIC('Image'...) (Semantische Suche über Text und Bilder hinweg). Es kombiniert Bewertungen aus diesen drei Klauseln mithilfe eines gewichteten Summenansatzes, wodurch die lexikalischen Bewertungen mit höherer Priorität bewertet werden, indem sie im Vergleich zu semantischen Bewertungen größere Gewichtungen zuweisen. Der letzte Rang liegt zwischen 0 und 1000. |
| MIN | Dieser Zusammenführungsalgorithmus ist das Standardverhalten bei einem AND-Cursor. Es wählt den minimalen Rang aus allen Ergebnissen aus. |
| MAX | Dieser Zusammenführungsalgorithmus ist das Standardverhalten bei einem OR-Cursor. Es wählt die maximale Rangfolge aus allen Ergebnissen aus. |
Anmerkung
Die Verwendung von RANG BY MERGE(MIN) mit einem OR-Cursor oder RANG BY MERGE(MAX) mit einem AND-Cursor führt nicht zu den erwarteten Ergebnissen. Es wird empfohlen, die MERGE-Funktion mit der RANK BY-Klausel explizit nur in Verbindung mit dem CONVEXCOMBINATION-Operator zu verwenden, wenn lexikalische und semantische Suchergebnisse in einem einzigen Resultset zusammengeführt werden.
Example
Das folgende Beispiel veranschaulicht die Verwendung der MERGE-Funktion zum Suchen nach Elementen lexikalisch und semantisch mit dem Wort "Computer" in den Feldern "Bild" oder "Text". Die Suchergebnisse werden dann mithilfe des RANK BY MERGE-Operators bewertet, der Bewertungen aus allen Ergebnissen aggregiert, um eine endgültige Rangliste zu generieren.
WHERE (CONTAINS(*,'computer', 1033)
OR CONTAINSSEMANTIC('Image', *, 'computer', 1033)
OR CONTAINSSEMANTIC('Text', System.ItemNameDisplay, 'computer', 1033)
OR CONTAINSSEMANTIC('Text', *, 'computer', 1033))
RANK BY MERGE(CONVEXCOMBINATION)
Weitere Informationen zum CONTAINSSEMANTIC-Prädikat finden Sie unter CONTAINSSEMANTIC-Prädikat.