2007-12-24

Scrips úteis no uso do Oracle Text

(If you need an english translation please ask)

Os documentos que estão pendentes de indexação
select * from CTX_USER_PENDING

Os documentos que derão erro na indexação (normalmente devido ao filtro)
select * from ctx_user_index_errors

Como evitar que os documentos que derão erro na indexação (normalmente devido ao filtro) sejam reindexados.

Se somente uma tabela/user update tabela_docs set format='IGNORE' where rowid in (select err_textkey from ctx_user_index_errors) and format!='IGNORE'

se mais update tabela_docs set format='IGNORE' where rowid in (select err_textkey from ctx_user_index_errors where err_index_name ='TABELA_DOCS_CTX') and format!='IGNORE'

Para obrigar o filtro a ser o mais simples
update tabela_docs set format='TEXT' where mime_type like 'text%';

Ver Report do indice
DECLARE
v_report CLOB := null;
BEGIN
CTX_REPORT.INDEX_STATS(
index_name => 'TABELA_DOCS_CTX',
report => v_report,
part_name => NULL,
frag_stats => NULL,
list_size => 20,
report_format => NULL);

dbms_output.put_line(v_report);
DBMS_LOB.FREETEMPORARY(v_report);
END;

Adicionar uma stopword a indice já existente
ALTER INDEX TABELA_DOCS_CTX REBUILD PARAMETERS ('add stopword mas' );

Ver o tamanho do indice
select ctx_report.index_size('TABELA_DOCS_CTX') from dual;