A consulta baseada em índice de múltiplas colunas do Oracle Text não retorna nenhuma linha
-
27-10-2019 - |
Pergunta
Eu tenho uma tabela MAH_KERESES_MV
com 3 colunas OBJEKTUM_NEV
, KERESES_SZOVEG_1
, KERESES_SZOVEG_2
.Eu crio o seguinte índice do Oracle Text com várias colunas:
exec ctx_ddl.create_preference( 'MAH_SEARCH', 'MULTI_COLUMN_DATASTORE');
exec ctx_ddl.set_attribute('MAH_SEARCH', 'COLUMNS', 'OBJEKTUM_NEV, KERESES_SZOVEG_1, KERESES_SZOVEG_2');
create index MAX_KERES_CTX on MAH_KERESES_MV(OBJEKTUM_NEV)
indextype is ctxsys.context
parameters ('DATASTORE MAH_SEARCH');
Mas a consulta não retorna nenhuma linha, embora se eu formular a consulta com o operador like
, obtenho os resultados conforme o esperado:
SELECT id, OBJEKTUM_NEV
FROM MAH_KERESES_MV
WHERE CONTAINS(OBJEKTUM_NEV, 'C')>0;
Algum corpo pode ajudar?TIA,
Tamas
Solução
Apenas no caso de algum corpo estar interessado mais tarde, a solução foi que a cláusula CONTAINS acima filtra o caractere C como uma entidade autônoma (ou seja, palavra).A cláusula where correta seria:
WHERE CONTAINS(OBJEKTUM_NEV, 'C%')>0;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow