Une configuration de recherche plein texte précise toutes les options
nécessaires pour transformer un document en un tsvector
:
le planificateur à utiliser pour diviser le texte en jetons, et les
dictionnaires à utiliser pour transformer chaque jeton en un lexème.
Chaque appel à to_tsvector
ou to_tsquery
a besoin d'une configuration de recherche plein texte pour réaliser le
traitement. Le paramètre de configuration
default_text_search_config indique le nom de la
configuration par défaut, celle utilisée par les fonctions de recherche
plein texte si un paramètre explicite de configuration est oublié.
Il se configure soit dans postgresql.conf
soit dans
une session individuelle en utilisant la commande SET
.
Plusieurs configurations de recherche plein texte prédéfinies sont disponibles et vous pouvez créer des versions personnalisées facilement. Pour faciliter la gestion des objets de recherche plein texte, un ensemble de commandes SQL est disponible, et il existe plusieurs commandes psql affichant des informations sur les objets de la recherche plein texte (Section 12.10).
Comme exemple, nous allons créer une configuration pg
en commençant à partir d'une duplication de la configuration
english
.
CREATE TEXT SEARCH CONFIGURATION public.pg ( COPY = pg_catalog.english );
Nous allons utiliser une liste de synonymes spécifique à PostgreSQL et nous
allons la stocker dans $SHAREDIR/tsearch_data/pg_dict.syn
.
Le contenu du fichier ressemble à ceci :
postgres pg pgsql pg postgresql pg
Nous définissons le dictionnaire des synonymes ainsi :
CREATE TEXT SEARCH DICTIONARY pg_dict ( TEMPLATE = synonym, SYNONYMS = pg_dict );
Ensuite, nous enregistrons le dictionnaire Ispell
english_ispell
qui a ses propres fichiers de
configuration :
CREATE TEXT SEARCH DICTIONARY english_ispell ( TEMPLATE = ispell, DictFile = english, AffFile = english, StopWords = english );
Maintenant, nous configurons la correspondance des mots dans la
configuration pg
:
ALTER TEXT SEARCH CONFIGURATION pg ALTER MAPPING FOR asciiword, asciihword, hword_asciipart, word, hword, hword_part WITH pg_dict, english_ispell, english_stem;
Nous choisissons de ne pas indexer certains types de jeton que la configuration par défaut peut gérer :
ALTER TEXT SEARCH CONFIGURATION pg DROP MAPPING FOR email, url, url_path, sfloat, float;
Maintenant, nous pouvons tester notre configuration :
SELECT * FROM ts_debug('public.pg', ' PostgreSQL, the highly scalable, SQL compliant, open source object-relational database management system, is now undergoing beta testing of the next version of our software. ');
La prochaine étape est d'initialiser la session pour utiliser la
nouvelle configuration qui était créée dans le schéma
public
:
=> \dF List of text search configurations Schema | Name | Description ---------+------+------------- public | pg | SET default_text_search_config = 'public.pg'; SET SHOW default_text_search_config; default_text_search_config ---------------------------- public.pg