[Oracle 9i] : Synchonisation d'Index Text
Bonjour,
J'ai un index Oracle Text sur une colonne 'Titre' de type CLOB :
Code:
1 2 3 4
|
CREATE INDEX IDX_EXTRACT_TITRE
ON TABLE_TITLE (Titre) INDEXTYPE IS CTXSYS.CONTEXT
PARAMETERS ('DATASTORE DS_EXTRACT_TITRE LEXER LX_EXTRACT_TITRE FILTER FILTER_EXTRACT_TITRE STORAGE STORAGE_EXTRACT_TITRE WORDLIST WORDLIST_EXTRACT_TITRE'); |
Lors des mises à jour via une commande SQL, l'index n'est pas recalculé... Un petit tour sur Google plus tard, une solution consiste à créer un trigger qui déclenche un job de synchronisation soit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
CREATE OR REPLACE TRIGGER TU_TABLE_TITLE
AFTER INSERT OR UPDATE OR DELETE ON TABLE_TITLE
DECLARE
v_job NUMBER;
BEGIN
IF deleting THEN
DBMS_JOB.SUBMIT(v_job, 'ctx_ddl.optimize_index(''IDX_EXTRACT_TITRE
'',''FULL'');', SYSDATE);
ELSE
DBMS_JOB.SUBMIT(v_job, 'ctx_ddl.sync_index(''IDX_EXTRACT_TITRE');', SYSDATE);
END IF;
END;
/
show errors;
/ |
Le job est bien créé sur une mise à jour en base et s'exécute (enfin je pense et qu'il n'y a pas d'erreur dans la log ORACLE).
Par contre, l'index n'est pas recalculé.
Exemple :
Code:
1 2 3 4 5 6 7
|
UPDATE TABLE_TITLE
SET titre = 'LES INDEX TEXT C LA FETE'
WHERE cle=une cle
SELECT count(*) FROM TABLE_TITLE WHERE CONTAINS(TITRE, 'INDEX') > 0 me retourne 0 enregistrement. |
Quelqu'un a-t-il une petite idée ? La solution ?
Merci