15 janvier 2009

Ignorer un paramètre sur index full-text dans une requête

Lorsqu'une requête contient un paramètre portant sur un index full-text, par défaut la pertinence relative à l'index full-text fait partie du résultat. La requête est donc de la forme suivante :

SELECT
MATCH(XX, YY, ZZ) AGAINST({ParamFullText}) AS PertinenceFullText
FROM
TABLE
WHERE

AND PertinenceFullText > 0
ORDER BY
PertinenceFullText DESC
Tant que cette pertinence figure dans le résultat, le paramètre de la requête s'y rapportant est obligatoire. La syntaxe suivante :
Requête.ParamFullText = Null
HExécuteRequête(Requête)
conduira à l'erreur :
Erreur dans le code SQL de la requête . Initialisation de la requête impossible. Le paramètre doit être renseigné.
Pour pouvoir rendre le paramètre optionnel, il suffit de ne pas le faire figurer dans le résultat de la requête. Dans l'éditeur de requêtes il faut pour cela sélectionner "ne pas afficher" en cliquant sur l'oeil correspondant à la condition sur l'index full-text. La requête obtenue sera de la forme suivante :
SELECT
*
FROM
TABLE
WHERE

AND MATCH(XXX, YYY, ZZZ) AGAINST({ParamFullText}) > 0
Comme toujours, c'est très simple ... une fois que l'on sait.