Olá Senhores,
Estou com uma situação que realmente não consigo entender. Existe muitos livros
com a palavra direito e quando uso o CONTAINS o Oracle não me retorna nenhuma
linha.
Veja como fiz
* Criei uma preferencia para se case-insentive e ignorar acentos.
BEGIN
CTX_DDL.CREATE_PREFERENCE ('MIXED_CASE_LEXER_PREF','BASIC_LEXER');
CTX_DDL.SET_ATTRIBUTE ('MIXED_CASE_LEXER_PREF', 'mixed_case', 'FALSE');
CTX_DDL.SET_ATTRIBUTE ('MIXED_CASE_LEXER_PREF', 'base_letter', 'TRUE');
END;
/
* Depois criei o index sobre a coluna LIV_TITULO.
CREATE INDEX IDX_SEARCH_LIV_TITULO ON "LIVRO" ("LIV_TITULO") INDEXTYPE IS
"CTXSYS"."CONTEXT" PARAMETERS ('LEXER DBAEFIKASE.MIXED_CASE_LEXER_PREF')
Quando Executo o SQL veja o que ocorre;
SQL> select liv_titulo from LIVRO where CONTAINS(LIV_TITULO,'direito',1) > 0;
nÒo hß linhas selecionadas
SQL> select liv_titulo from ERPEDU_PRODUCAO.LIVRO where
CONTAINS(LIV_TITULO,'direito and nasce',1) > 0;
LIV_TITULO--------------------------------------------------------------------------------Como
nasce o direito
Como nasce o direitoComo nasce o direito
Observem que a primeira consulta e é abrangente não traz linhas, mas quando
pesquiso por "direito" AND "nasce" o Oracle encontra as linhas. Alguém consegue
entender este comportamento?
Obrigado.