dict_int est un exemple de modèle de dictionnaire pour la recherche plein texte. La création de ce dictionnaire à été motivée par la volonté de pouvoir contrôler l'indexage d'entiers (signés et non signés), pour permettre à de tels nombres d'être indexés sans grossissement excessif du nombre de mots uniques, ce qui affecte grandement la performance de la recherche.
Le dictionnaire accepte deux options :
le paramètre maxlen indique le nombre maximum de chiffres autorisés dans un mot de type entier. La valeur par défaut est 6 ;
Le paramètre rejectlong précise si un entier trop long doit être tronqué ou ignoré. Si rejectlong vaut false (valeur par défaut), le dictionnaire renvoie les maxlen premiers chiffres de l'entier. Si rejectlong vaut true, le dictionnaire traite l'entier comme un terme courant, l'entier n'est donc pas indexé. Cela signifie aussi qu'un tel nombre ne peut pas être recherché.
Installer l'extension dict_int crée un modèle de recherche plein texte intdict_template et un dictionnaire intdict basé sur ce dernier avec les paramètres par défaut. Les paramètres peuvent être modifiés, par exemple :
mabase# ALTER TEXT SEARCH DICTIONARY intdict (MAXLEN = 4, REJECTLONG = true); ALTER TEXT SEARCH DICTIONARY
ou créez de nouveaux dictionnaires à partir du modèle.
Pour tester le dictionnaire :
mydb# select ts_lexize('intdict', '12345678'); ts_lexize ----------- {123456}
mais une utilisation réelle nécessite de l'inclure dans une configuration de recherche plein texte comme celle décrite dans Chapitre 12, Recherche plein texte. Cela peut ressembler à ceci :
ALTER TEXT SEARCH CONFIGURATION english ALTER MAPPING FOR int, uint WITH intdict;