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. Cela peut ressembler à ceci :
ALTER TEXT SEARCH CONFIGURATION english ALTER MAPPING FOR int, uint WITH intdict;