ora-29833 indextype不存在

时间:2016-08-25 07:46:07

标签: sql oracle stored-procedures oracle10g ddl

为通配符搜索创建索引。

在oracle 10g中执行以下脚本时

CREATE INDEX sampletexttext_idx ON tablename(columnname)
INDEXTYPE IS ctxsys.context parameters ('DATASTORE CTXSYS.DEFAULT_DATASTORE');

它抛出以下异常:

  

ora-29833 indextype不存在

我也试过了basic_wordlist。它无法正常工作

有人可以建议为通配符搜索创建索引的最佳方法吗?

1 个答案:

答案 0 :(得分:1)

创建它时似乎不完整。请看下面如何做到这一点:

---创建一个样本表

drop table quick ;
create table quick 
  ( 
    quick_id number primary key, 
    text      varchar(80) 
  ); 

---为'轮胎%'插入一行10个扩展

insert into quick ( quick_id, text ) 
  values ( 1, 'tire tirea tireb tirec tired tiree tiref tireg tireh tirei 
tirej') ;
commit;

---使用wildcard_maxterms = 100

创建索引
begin 
    Ctx_Ddl.Create_Preference('wildcard_pref', 'BASIC_WORDLIST'); 
    ctx_ddl.set_attribute('wildcard_pref', 'wildcard_maxterms', 100) ;
end; 
/
create index wildcard_idx on quick(text)
    indextype is ctxsys.context 
    parameters ('Wordlist wildcard_pref') ;

---查询'轮胎%' - 应该可以正常工作

select quick_id from quick
  where contains ( text, 'tire%' ) > 0;

drop table quick ;

参考:http://docs.oracle.com/cd/A91202_01/901_doc/text.901/a90121/cdatadi6.htm