Я создал следующую таблицу PRODUCTS в базе данных Oracle 11g EE:
( ID NUMBER(10) NOT NULL PRIMARY KEY
,NAME VARCHAR2(100) NOT NULL
,DESCRIPTION VARCHAR2(4000) NOT NULL
,CREATED DATE NOT NULL
,CHANGED DATE );
Для этой таблицы в поле DESCRIPTION был создан следующий индекс типа CTXSYS.CONTEXT:
BEGIN
CTX_DDL.CREATE_PREFERENCE ('MY_LEXER', 'BASIC_LEXER');
CTX_DDL.SET_ATTRIBUTE ('MY_LEXER', 'BASE_LETTER', 'YES');
END;
/
CREATE INDEX PROD_DESCR_TXT_IDX ON PRODUCTS(DESCRIPTION) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('LEXER MY_LEXER');
BEGIN
CTX_DDL.SYNC_INDEX('DOC_DESCR_TXT_IDX', '2M');
END;
/
ANALYZE TABLE DOCUMENTOS_GED COMPUTE STATISTICS;
В этой таблице много тысяч строк, и мне нужно запросить индекс CONTEXT, чтобы вернуть строки в порядке убывания к дате последнего изменения (поле CHANGED) и, если это поле пусто, к дата создания (поле CREATED).
Я хотел бы знать, может ли кто-нибудь помочь мне создать индекс, который соответствует критериям поиска для CONTEXT, и в то же время привести результаты, упорядоченные по "NVL (CHANGED, СОЗДАНО) DES C "функция, чтобы сделать мгновенный результат выполнения следующей команды:
SELECT *
FROM PRODUCTS
WHERE CONTAINS (DESCRIPTION, 'kitchen AND accessories') > 0
ORDER BY NVL(CHANGED, CREATED) DESC;
Заранее благодарен за помощь