

Les analyseurs de recherche plein texte sont responsables du découpage d'un document brut en jetons et d'identifier le type des jetons. L'ensemble des types possibles est défini par l'analyseur lui-même. Notez qu'un analyseur ne modifie pas le texte -- il identifie les limites plausibles des mots. Comme son domaine est limité, il est moins important de pouvoir construire des analyseurs personnalisés pour une application. Actuellement, PostgreSQL fournit un seul analyseur interne qui s'est révélé utile pour un ensemble varié d'applications.
   L'analyseur interne est nommé pg_catalog.default.
   Il reconnaît 23 types de jeton, dont la liste est disponible dans
   Tableau 12.1.
  
Tableau 12.1. Types de jeton de l'analyseur par défaut
| Alias | Description | Exemple | 
|---|---|---|
| asciiword | Mot, toute lettre ASCII | elephant | 
| word | Mot, toute lettre | mañana | 
| numword | Mot, lettres et chiffres | beta1 | 
| asciihword | Mot composé, en ASCII | up-to-date | 
| hword | Mot composé, toutes les lettres | lógico-matemática | 
| numhword | Mot composé, lettre et chiffre | postgresql-beta1 | 
| hword_asciipart | Partie d'un mot composé, en ASCII | postgresqldans le contextepostgresql-beta1 | 
| hword_part | Partie d'un mot composé, toutes les lettres | lógicooumatemáticadans le contextelógico-matemática | 
| hword_numpart | Partie d'un mot composé, lettres et chiffres | beta1dans le contextepostgresql-beta1 | 
| email | Adresse email | foo@example.com | 
| protocol | En-tête de protocole | http:// | 
| url | URL | example.com/stuff/index.html | 
| host | Hôte | example.com | 
| url_path | Chemin URL | /stuff/index.html, dans le contexte d'une URL | 
| file | Fichier ou chemin | /usr/local/foo.txt, en dehors du contexte d'une URL | 
| sfloat | Notation scientifique | -1.234e56 | 
| float | Notation décimale | -1.234 | 
| int | Entier signé | -1234 | 
| uint | Entier non signé | 1234 | 
| version | Numéro de version | 8.3.0 | 
| tag | Balise XML | <a href="dictionaries.html"> | 
| entity | Entité XML | & | 
| blank | Symboles espaces | (tout espace blanc, ou signe de ponctuation non reconnu autrement) | 
    La notion de l'analyseur d'une « lettre » est déterminée par la
    configuration de la locale sur la base de données, spécifiquement par
    lc_ctype. Les mots contenant seulement des lettres ASCII
    basiques sont reportés comme un type de jeton séparé, car il est parfois
    utile de les distinguer. Dans la plupart des langues européennes, les types
    de jeton word et asciiword doivent
    toujours être traités de la même façon.
   
   email ne supporte pas tous les caractères email valides
   tels qu'ils sont définis par la RFC
   5322. Spécifiquement, les seuls
   caractères non alphanumériques supportés sont le point, le tiret et le
   tiret bas.
  
   tag ne supporte pas tous les noms de balise valides
   d'après la définition du
   W3C Recommendation, XML.
   Spécifiquement, les seuls noms de balise supportés sont ceux commençant
   avec une lettre ASCII, tiret bas, ou un deux-points et contenant seulement
   des lettres, des chiffres, des tirets, des tirets bas et des deux-points.
   tag inclut aussi les commentaires XML commençant avec
   <!-- et finissant avec -->, et
   les déclarations XML (mais notez que ceci inclut tout ce qui commence avec
   <?x et se finit avec >).
  
Il est possible que l'analyseur produise des jetons qui coïncident à partir du même texte. Comme exemple, un mot composé peut être reporté à la fois comme un mot entier et pour chaque composante :
SELECT alias, description, token FROM ts_debug('foo-bar-beta1');
      alias      |               description                |     token
-----------------+------------------------------------------+---------------
 numhword        | Hyphenated word, letters and digits      | foo-bar-beta1
 hword_asciipart | Hyphenated word part, all ASCII          | foo
 blank           | Space symbols                            | -
 hword_asciipart | Hyphenated word part, all ASCII          | bar
 blank           | Space symbols                            | -
 hword_numpart   | Hyphenated word part, letters and digits | beta1
   Ce comportement est souhaitable, car il autorise le bon fonctionnement de la recherche sur le mot composé et sur les composants. Voici un autre exemple instructif :
SELECT alias, description, token FROM ts_debug('http://example.com/stuff/index.html');
  alias   |  description  |            token
----------+---------------+------------------------------
 protocol | Protocol head | http://
 url      | URL           | example.com/stuff/index.html
 host     | Host          | example.com
 url_path | URL path      | /stuff/index.html