CheckTsearch
Tsearch permet d'indexer tous les mots des colonnes des table PostgreSql
Ces index sont mis à jour à chaque insert, update, delete.
On peut choisir les colonnes à traiter. Raymond a créé un outil web CheckTsearch :
Il suffit de lancer (il est dans le menu WebTools/WebSite).
http://lbgi.igbmc.fr/gx/phpRR/CheckTsearch.php?database=gx
En gros on affiche toutes les tables avec toutes leurs colonnes et on demande lesquelles doivent être sous tsearch. La colonne idxfti est créée si nécessaire.
Attention la suite "Il suffit... " marche mais il fallait d'abord que je fasse
CREATE OR REPLACE FUNCTION t_tsearch_trigger()
RETURNS trigger AS
$BODY$
set tscol [lindex $args 0]
set tsconf [lindex $args 1]
set nbargs [llength $args]
set fullstr ""
for {set i 2} {$i <= $nbargs-1} {incr i} {
set col [lindex $args $i]
spi_exec "SELECT f_replace_chars('[quote $NEW($col)]') AS texte"
append fullstr $texte " "
}
spi_exec "SELECT to_tsvector('[quote $tsconf]','[quote $fullstr]') AS vect"
set NEW($tscol) $vect
return [array get NEW]
$BODY$
LANGUAGE 'pltcl' VOLATILE
COST 100;
ALTER FUNCTION t_tsearch_trigger() OWNER TO ripp;
Attention idxfti n'est pas mis à jour. Il faut faire, pour toutes les tables t, colonnes c.
update t set c=c