Tsearch2 permet d’indexer un champ pour par la suite y faire une recherche fulltext.
Cette article est une méthode pour l’installer sur postgresql 8.1 pour une distribution debian (etch)
PostgreSql doit déjà être installé, tsearch2 se trouve dans le paquet postgresql-contrib-8.1.
Donc :
# apt-get install postgresql-contrib-8.1
# su - postgres
postgres$ cd /usr/share/postgresql/8.1/contrib
postgres$ psql labase < tsearch2.sql
Il faut aussi autoriser votre utilisateur a lire la configuration de tsearch2
postgres$ psql labase
Bienvenue dans psql 8.1.5, l'interface interactive de PostgreSQL.
labase=# grant select on pg_ts_cfg to www;
labase=# grant select on pg_ts_cfgmap to www;
labase=# grant select on pg_ts_dict to www;
labase=# grant select on pg_ts_parser to www;
Si ce n’est pas fait on va permettre l’utilisation de plpgsql.
labase=# create language plpgsql;
labase=# grant usage on language plpgsql to www;
Pour vérifier, on va créer une table ts_test, le mieux est de recopier le code qui suit dans un fichier et de l’éxécuter comme celà :
psql labase < ts_test.sql
create table ts_test (
texte varchar(100) not null,
ts_idx tsvector
);
create or replace function trig_ts_test() returns trigger as $trig$
begin
new.ts_idx := to_tsvector('default', new.texte);
return new;
end;
$trig$ LANGUAGE plpgsql;
create trigger ts_test_before before insert or update on ts_test
for each row execute procedure trig_ts_test();
On peut essayer :
Par défaut tsearch2 utilise un dictionnaire anglais, on va maintenant configurer pour utiliser un dictionnaire français. (marche pas) On va installer ce qu’il nous manque :
# apt-get install ifrench-gut wfrench
En tant qu’utilisateur postgres il faut exécuter la requête :
insert into pg_ts_dict (
select
'fr_ispell',
dict_init,
'DictFile="/usr/share/dict/french",'
'AffFile="/usr/lib/ispell/french.aff",'
'StopFile="/usr/local/share/pgsql/french.stop"',
dict_lexize
from
pg_ts_dict
where
dict_name='ispell_template'
);
select set_curdict('fr_ispell');
update pg_ts_cfgmap set dict_name='{fr_ispell}'
where ts_name='default' and tok_alias='lword';
update pg_ts_cfgmap set dict_name='{fr_ispell}'
where ts_name='default' and tok_alias='lpart_hword';
update pg_ts_cfgmap set dict_name='{fr_ispell}'
where ts_name='default' and tok_alias='lhword';
Les fortunes de #epplug. Retrouvez les membres de notre association sur notre salon IRC: irc.geeknode.net #epplug
Voici quelques extraits amusants (Télécharger le fichier de fortune)
Association Picarde des Utilisateurs de Logiciels Libres (EPPLUG) Association régie par la loi 1901
137, avenue du général FOY 80000 AMIENS.
Parution au Journal Officiel le 21/06/03 sous le n° 20030025 Siren : 494 525 280
© epplug.org 2002-2005 - ce site fonctionne grace au moteur d'edition collaboratif SPIP fonctionnant sous license GPL
Toutes les interventions sur ce site sont la propriété de leurs auteurs respectifs.