2009-12-30 6 views
5

J'ai des documents qui contiennent des séquences telles que radio/tested que je voudrais revenir succès dans les requêtes commeDésactivation du PostgreSQL 8.4 analyseur de 'type fichier` jeton tsvector

select * from doc 
where to_tsvector('english',body) @@ to_tsvector('english','radio') 

Malheureusement, l'analyseur par défaut prend radio/tested comme file (bien qu'il soit dans un environnement Windows), il ne correspond donc pas à la requête ci-dessus. Quand je lance ts_debug dessus, c'est quand je vois qu'il est reconnu comme un fichier, et le lexème finit par être radio/tested plutôt que les deux lexemes radio et test.

Est-il possible de configurer l'analyseur pour ne pas rechercher les jetons file? J'ai essayé

ALTER TEXT SEARCH CONFIGURATION public.english 
    DROP MAPPING FOR file; 

... mais cela n'a pas changé la sortie de ts_debug. S'il y a un moyen de désactiver file, ou au moins de le faire reconnaître à la fois file et tous les mots qui, selon lui, constituent les noms de répertoire en cours de route, ou s'il existe un moyen de traiter les barres obliques comme des traits d'union ou des espaces. coup de performance de regexp_replace eux-mêmes) qui serait vraiment utile.

Répondre

5

Je pense que la seule façon de faire ce que vous voulez est de créer votre propre analyseur :-(Copier wparser_def.c dans un nouveau fichier, retirer des tables d'analyse (actionTPS_Base et suivantes) les entrées qui se rapportent à fichiers (TPS_InFileFirst, TPS_InFileNext etc), et vous devriez régler. Je pense que la principale difficulté rend le module conforme au langage C de PostgreSQL (PG_FUNCTION_INFO_V1 et ainsi de suite). Jetez un oeil à contrib/test_parser/ pour un exemple.

+0

Oh ça alors. Merci d'avoir répondu et pour les conseils, je suis content de savoir ce que cela implique. – Kev