Depuis quelques heures, je suis en train de jouer avec toutes sortes de variations de la recherche en texte intégral de SQL Server. Cependant, je suis toujours incapable de comprendre comment fonctionne le classement. J'ai rencontré quelques exemples qui me rendent vraiment confus quant à la façon dont ils se classent plus haut que d'autres. Par exempleClassement de la recherche de texte intégral (SQL Server)
J'ai une table avec 5 cols + plus qui ne sont pas indexés. Tous les champs sont nvarchar
.
Je cours cette requête (enfin presque .. Je retapé avec des noms différents)
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;
Ainsi, si je recherche 05/11/1964 JOHN JACKSON je recevrais « 11/05/1964" OU "JOHN *" ou "JACKSON *" et ces résultats:
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
Alors enfin ma question. Je ne vois pas comment les rangées 1 et 2 sont rangées au-dessus de la rangée 3 et pourquoi la rangée 3 est classée comme la rangée 4. La rangée 2 devrait avoir le rang le plus élevé vu que la chaîne de recherche correspond au prénom et au nom comme la date de naissance.
Si je change le OU en ET je n'obtiens aucun résultat. Que se passe-t-il si vous supprimez les critères DoB?
comment fusionner les colonnes et utiliser exactement?J'ai le même problème. – zsharp
Est-il préférable d'avoir une colonne calculée et d'avoir un index de texte complet sur cette colonne que d'avoir à chercher sur des colonnes séparées? – user636525