PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 13.9 » Annexes » Modules supplémentaires fournis » dict_int

F.11. dict_int

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.

Ce module est considéré comme « trusted », ce qui signifie qu'il peut être installé par des utilisateurs simples (sans attribut SUPERUSER) et qui ont l'attribut CREATE sur la base de données courante.

F.11.1. Configuration

Le dictionnaire accepte trois 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é.

  • Le paramètre absval spécifie si les signes « + » ou « - » au début doivent être supprimés des entiers. Par défaut, la valeur est false. Quand la valeur vaut true, le signe est supprimé avant que maxlen soit appliquée.

F.11.2. Utilisation

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;