基于Oracle Text多列索引的查询不返回任何行

时间:2011-12-02 13:15:01

标签: oracle text oracle-text

我有一个MAH_KERESES_MV表,其中包含3列OBJEKTUM_NEVKERESES_SZOVEG_1KERESES_SZOVEG_2。我创建了以下多列Oracle Text索引:

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');

但查询不会返回任何行,但如果我使用like运算符表示查询,那么我会按预期得到结果:

SELECT  id, OBJEKTUM_NEV 
FROM MAH_KERESES_MV
WHERE CONTAINS(OBJEKTUM_NEV, 'C')>0;

有人可以帮忙吗? TIA,

的Tamas

1 个答案:

答案 0 :(得分:0)

以防任何机构稍后可能会感兴趣,解决方案是上述CONTAINS子句将C字符过滤为独立实体(即单词)。正确的where子句应该是:

WHERE CONTAINS(OBJEKTUM_NEV, 'C%')>0;