Объедините индекс Oracle CONTEXT и индекс на основе функций - PullRequest
0 голосов
/ 20 апреля 2020

Я создал следующую таблицу 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;

Заранее благодарен за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...