Difference between revisions of "CheckTsearch"

From Wikili
Jump to: navigation, search
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. Il faut faire, pour toutes les tables t, colonnes c.
+
===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