Difference between revisions of "CheckTsearch"
Line 12: | Line 12: | ||
La colonne idxfti est créée si nécessaire. | La colonne idxfti est créée si nécessaire. | ||
− | Attention la suite "Il suffit... " marche mais il fallait d'abord que je fasse | + | Attention la suite "Il suffit... " marche mais ... |
+ | |||
+ | ===Concernant la database=== | ||
+ | |||
+ | ===Il faut la fonction trigger dans le Catalog de postgresql=== | ||
+ | Pour cela il fallait d'abord que je fasse | ||
<source lang='sql'> | <source lang='sql'> | ||
Line 36: | Line 41: | ||
</source> | </source> | ||
− | Attention idxfti n'est pas mis à jour | + | ===Attention idxfti n'est pas mis à jour s'il y a déjà des données=== |
+ | Il faut faire, pour toutes les tables t, colonnes c. | ||
update t set c=c | update t set c=c |
Revision as of 08:37, 19 June 2009
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 d'un Fed).
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 ...
Concernant la database
Il faut la fonction trigger dans le Catalog de postgresql
Pour cela 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 s'il y a déjà des données
Il faut faire, pour toutes les tables t, colonnes c.
update t set c=c