Creo que la opción 'SYNC EVERY', como se describe en la respuesta anterior, solo está disponible en Oracle 10g o posterior. Si está utilizando una versión anterior de Oracle, deberá ejecutar la operación de sincronización periódicamente. Por ejemplo, puede crear procedimiento almacenado siguiente:
CREATE OR REPLACE
Procedure sync_ctx_indexes
IS
CURSOR sql1 is select distinct(pnd_index_owner||'.'||pnd_index_name) as index_name from ctx_pending;
BEGIN
FOR rec1 IN sql1 LOOP
ctx_ddl.sync_index(rec1.index_name);
END LOOP;
END;
y luego programar que se ejecute a través de DBMS_JOB:
DBMS_JOB.SUBMIT(job_id, 'sync_ctx_indexes;', SYSDATE, 'SYSDATE + 1/720');
En cuanto a la optimización del índice, siguiente comando se puede utilizar (también puede ser programado con DBMS_JOB o a través de cron):
alter index my_index rebuild online parameters('optimize full maxtime 60');
También hay un paquete CTX_ * con funciones similares disponibles.
¿Qué indicaciones tiene de que el índice no se está sincronizando? – dpbradley
Es bastante común que este tipo de herramientas no hagan suposiciones sobre sus requisitos específicos. La creación y el mantenimiento de índices en grandes cantidades de datos no estructurados generalmente requieren cierta consideración para que las elecciones de diseño produzcan una solución con compensaciones aceptables. Las estrategias de actualización y mantenimiento para un motor de búsqueda probablemente serán muy diferentes de una solución de autoría colaborativa, que funciona de forma paralela a los análisis. Oracle le ofrece una pequeña gama de opciones de sincronización para elegir, y con solo 10k diarios DML, puede salirse con la suya con cualquiera de ellos. – Roy