Wenn Sie eine CONTAINS-Klausel in eine FROM-Klausel einer Abfrage einbeziehen, hat jede Übereinstimmung einen ihr zugeordneten Punktewert. Der Punktewert zeigt an, wie genau die Übereinstimmung ist, und Sie können die Punktewertinformationen verwenden, um die Daten zu sortieren.
Die Bewertung basiert auf zwei Kriterien:
Die Häufigkeit, mit der ein Begriff in der indizierten Zeile erscheint. Je häufiger ein Begriff in der indizierten Zeile auftritt, desto höher ist der Punktewert.
Die Häufigkeit, mit der ein Begriff im Textindex erscheint. Je häufiger ein Begriff im Textindex erscheint, desto niedriger ist der Punktewert. In Sybase Central können Sie sehen, wie häufig ein Begriff im Textindex erscheint, indem Sie das Register Vokabular für den Textindex verwenden. Wählen Sie die Begriff-Spalte, um die Begriffe alphabetisch zu sortieren. Die Häufigkeitsspalte zeigt an, wie oft der Begriff im Textindex erscheint.
Abhängig vom Typ der Volltextsuche wirken sich auch andere Kriterien auf die Bewertung aus. In Nachbarschaftssuchen wirkt sich beispielsweise die Nähe von Suchbegriffen zueinander auf die Bewertung aus.
Standardmäßig hat die Ergebnismenge einer CONTAINS-Klausel den Korrelationsnamen contains und enthält eine einzelne Spalte namens score. Sie können "contains".score
in der SELECT-Liste, in der ORDER BY-Klausel oder in anderen Teilen der Abfrage referenzieren. Da "contains" ein reserviertes
SQL-Wort ist, dürfen Sie allerdings nicht vergessen, es in Anführungszeichen zu setzen. Als Alternative können Sie einen anderen
Korrelationsnamen angeben (z.B. CONTAINS ( Ausdruck ) AS ct
). In den Dokumentationsbeispielen für die Volltextsuche wird die Punktewertspalte als ct.score
referenziert .
Die folgende Anweisung durchsucht "MarketingInformation.Description" nach Begriffen, die mit stretch oder mit comfort beginnen:
SELECT ID, ct.score, Description FROM MarketingInformation CONTAINS ( MarketingInformation.Description, 'stretch* | comfort*' ) AS ct ORDER BY ct.score DESC; |
ID | score | Description |
---|---|---|
910 | 5,570408968026068 | <html><head><meta http-equiv=Content-Type content="text/html; charset=windows-1252"><title>Shorts</title></head><body lang=EN-US><p><span
style='font-size:10.0pt;font-family:Arial'>These quick-drying cotton shorts provide all day comfort on or off the trails. Now with a more comfortable and stretchy fabric and an adjustable drawstring waist.</span></p></body></html> |
907 | 3,658418186470189 | <html><head><meta http-equiv=Content-Type content="text/html; charset=windows-1252"><title>Visor</title></head><body lang=EN-US><p><span
style='font-size:10.0pt;font-family:Arial'>A polycarbonate visor with an abrasion-resistant coating on the outside. Great
for jogging in the spring, summer, and early fall. The elastic headband has plenty of stretch to give you a snug yet comfortable fit every time you wear it.</span></p></body></html> |
905 | 1,6750365447462499 | <html><head><meta http-equiv=Content-Type content="text/html; charset=windows-1252"><title>Baseball Cap</title></head><body
lang=EN-US><p><span style='font-size:10.0pt;font-family:Arial'>A lightweight wool cap with mesh side vents for breathable
comfort during aerobic activities. Moisture-absorbing headband liner.</span></p></body></html> |
Artikel 910 hat den höchsten Punktewert, weil er zwei Instanzen des Präfixbegriffs comfort enthält, während andere nur eine Instanz haben. Außerdem hat Artikel 910 auch eine Instanz des Präfixbegriffs "stretch.
Das folgende Beispiel zeigt, wie Sie eine Volltextsuche über mehrere Spalten ausführen und die Ergebnisse bewerten:
Erstellen Sie folgendermaßen einen sofortigen Textindex für die Products-Tabelle
CREATE TEXT INDEX scoringExampleMult ON Products ( Description, Name ); |
Führen Sie wie folgt eine Volltextsuche auf den Spalten "Description" und "Name" für die Begriffe cap oder visor aus. Das Ergebnis der CONTAINS-Klausel wird dem Korrelationsnamen "ct" zugewiesen und in der SELECT-Liste referenziert, um in die Ergebnisse aufgenommen zu werden. Außerdem wird die Spalte "ct.score" in der ORDER BY-Klausel referenziert, um die Ergebnisse in absteigender Sortierfolge anhand der Punktewerte zu sortieren.
SELECT Products.Description, Products.Name, ct.score FROM Products CONTAINS ( Products.Description, Products.Name, 'cap OR visor' ) ct ORDER BY ct.score DESC; |
Description | Name | score |
---|---|---|
Cloth Visor | Visor | 3,5635154905713042 |
Plastic Visor | Visor | 3,4507856451176244 |
Wool cap | Baseball Cap | 3,2340501745357333 |
Cotton Cap | Baseball Cap | 3,090467108972918 |
Die Punktewerte bei einer Suche über mehrere Spalten werden berechnet, als ob die Spaltenwerte miteinander verkettet und als einzelner Wert indiziert wären. Beachten Sie allerdings, dass Phrasen und NEAR-Operatoren nie über mehrere Spaltengrenzen übereinstimmen, und ein Suchbegriff, der in mehr als einer Spalte erscheint, den Punktewert mehr erhöht, als er es in einem einzelnen verketteten Wert tun würde.
Damit die Beispiele in der Dokumentation richtig funktionieren, müssen Sie den Textindex löschen, den Sie für die Products-Tabelle erstellt haben. Um dies zu tun, führen Sie die folgende Anweisung aus:
DROP TEXT INDEX scoringExampleMult ON Products; |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |