

  Le module dict_xsyn (Extended Synonym
   Dictionary, dictionnaire étendu de
  synonymes) est un exemple de modèle de dictionnaire pour la recherche
  plein texte. Ce type de dictionnaire remplace des mots avec un ensemble
  de synonymes, ce qui rend possible la recherche d'un mot en utilisant
  un de ses synonymes.
 
   Un dictionnaire dict_xsyn accepte les options
   suivantes :
  
     matchorig contrôle si le mot original est accepté par
     le dictionnaire. Par défaut à true.
    
     matchsynonyms contrôle si les synonymes sont acceptés
     par le dictionnaire. Par défaut à false.
    
     keeporig contrôle si le mot original est inclus dans
     la sortie du dictionnaire. Par défaut à true.
    
     keepsynonyms contrôle si les synonymes sont inclus
     dans la sortie du dictionnaire. Par défaut à true.
    
     rules est le nom du fichier contenant la liste
     des synonymes. Ce fichier doit être stocké dans
     $SHAREDIR/tsearch_data/
     (où $SHAREDIR est le répertoire des données partagées de
     la distribution PostgreSQL).
     Son nom doit se terminer par .rules (cette extension
     n'est pas à inclure dans le paramètre rules).
    
Le fichier rules a le format suivant :
chaque ligne représente un groupe de synonymes pour un mot simple, donné en premier sur la ligne. Les synonymes sont séparés par un espace :
mot syn1 syn2 syn3
    
     le signe dièse (#) est un délimiteur de commentaires. Il peut
     apparaître n'importe où dans la ligne. Le reste de la ligne sera ignoré.
    
   Un exemple est donné dans xsyn_sample.rules qui est installé dans
   $SHAREDIR/tsearch_data/.
  
   Installer l'extension dict_xsyn crée un modèle
   xsyn_template de recherche plein texte et un dictionnaire
   xsyn basé sur le modèle, avec des paramètres par défaut.
   Il est possible de modifier les paramètres, par exemple :
   
ma_base# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=false); ALTER TEXT SEARCH DICTIONARY
ou de créer de nouveaux dictionnaires basés sur le modèle.
Pour tester le dictionnaire :
ma_base=# SELECT ts_lexize('xsyn', 'word');
      ts_lexize
-----------------------
 {syn1,syn2,syn3}
ma_base# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=true);
ALTER TEXT SEARCH DICTIONARY
ma_base=# SELECT ts_lexize('xsyn', 'word');
      ts_lexize
-----------------------
 {word,syn1,syn2,syn3}
ma_base# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=false, MATCHSYNONYMS=true);
ALTER TEXT SEARCH DICTIONARY
ma_base=# SELECT ts_lexize('xsyn', 'syn1');
      ts_lexize
-----------------------
 {syn1,syn2,syn3}
ma_base# ALTER TEXT SEARCH DICTIONARY xsyn (RULES='my_rules', KEEPORIG=true, MATCHORIG=false, KEEPSYNONYMS=false);
ALTER TEXT SEARCH DICTIONARY
ma_base=# SELECT ts_lexize('xsyn', 'syn1');
      ts_lexize
-----------------------
 {word}
   Une utilisation réelle implique son ajout dans une configuration de recherche plein texte comme décrit dans Chapitre 12. Cela pourrait ressembler à ceci :
ALTER TEXT SEARCH CONFIGURATION english
    ALTER MAPPING FOR word, asciiword WITH xsyn, english_stem;