In den letzten paar Stunden habe ich mit allen Arten von verschiedenen Varianten der SQL Server-Volltextsuche. Allerdings kann ich noch nicht herausfinden, wie das Ranking funktioniert. Ich bin auf ein paar Beispiele gestoßen, die mich wirklich darüber irritieren, wie sie höher sind als andere. Zum BeispielRanking der Volltextsuche (SQL Server)
Ich habe eine Tabelle mit 5 Spalten + mehr, die nicht indiziert sind. Alle sind nvarchar
Felder.
ich diese Abfrage leite (Na ja fast .. ich mit verschiedenen Namen abgetippt)
SET @SearchString = REPLACE(@Name, ' ', '*" OR "') --Splits words with an OR between
SET @SearchString = '"'[email protected]+'*"'
print @SearchString;
SELECT ms.ID, ms.Lastname, ms.DateOfBirth, ms.Aka, ms.Key_TBL.RANK, ms.MiddleName, ms.Firstname
FROM View_MemberSearch as ms
INNER JOIN CONTAINSTABLE(View_MemberSearch, (ms.LastName, ms.Firstname, ms.MiddleName, ms.Aka, ms.DateOfBirth), @SearchString) AS KEY_TBL
ON ms.ID = KEY_TBL.[KEY]
WHERE KEY_TBL.RANK > 0
ORDER BY KEY_TBL.RANK DESC;
Also wenn ich für 1964.11.05 John Jackson suchen Ich würde „5.11 erhalten/1964" OR "JOHN *" OR "JACKSON *" und diese Ergebnisse:
ID -- First Name -- Middle Name -- Last Name -- AKA -- Date of Birth -- SQL Server RANK
----------------------------------------------------------------------------------
1 | DAVE | JOHN | MATHIS | NULL | 11/23/1965 | 192
2 | MARK | JACKSON | GREEN | NULL | 05/29/1998 | 192
3 | JOHN | NULL | JACKSON | NULL | 11/05/1964 | 176
4 | JOE | NULL | JACKSON | NULL | 10/04/1994 | 176
So endlich meine Frage. Ich sehe nicht, wie Zeile 1 und 2 über Zeile 3 stehen und warum Zeile 3 gleichrangig ist wie Zeile 4. Zeile 2 sollte den höchsten Rang haben, da die Suchzeichenfolge auch mit Vorname und Nachname übereinstimmt als das Geburtsdatum.
Wenn ich das OR zu UND ändere, bekomme ich keine Ergebnisse.
wie die Spalten zusammenführen und genau verwenden?Ich habe das gleiche Problem. – zsharp
Ist es besser, eine berechnete Spalte zu haben und einen Volltextindex für diese Spalte zu haben, als in separaten Spalten suchen zu müssen? – user636525