Je suis un nouveau venu dans le domaine de la recherche plein texte, mais d'après l'article la documentation :
NOT ne peut apparaître qu'après AND, comme dans AND NOT. L'opérateur OR NOT est n'est pas autorisé. NOT ne peut être spécifié avant le premier terme .
Donc, dans votre cas, CONTAINSTABLE(MY_TABLE, *, 'NOT name')
est considéré comme non valide. La seule façon que j'ai trouvée d'utiliser le NOT
avec CONTAINSTABLE est le suivant :
SELECT *
FROM CONTAINSTABLE({table_name}, *, N'{another_condition} AND NOT name')
La syntaxe proposée par @NG. fonctionne bien lorsque vous n'avez pas besoin de RANK
mais dès que vous le souhaitez, il apparaît que vous devez ajouter une autre condition (factice) avant la condition NOT
(ce qui serait assez désordonné... n'utilisez pas de conditions factices si vous pouvez l'éviter).
NOTE : A mon avis, le concept de n'avoir qu'un NOT
à l'intérieur d'un CONTAINSTABLE n'a pas vraiment de sens lorsque l'objectif est d'obtenir des résultats classés. En effet, si cela était autorisé, tous les résultats correspondants partageraient la même valeur de classement (puisqu'ils ne contiendraient pas les éléments exclus). Les RANK
deviendrait une information non pertinente et une simple CONTAINS
pourrait être utilisé à la place CONTAINSTABLE
(cf. @NG. réponse).