为通配符搜索创建索引。
在oracle 10g中执行以下脚本时
CREATE INDEX sampletexttext_idx ON tablename(columnname)
INDEXTYPE IS ctxsys.context parameters ('DATASTORE CTXSYS.DEFAULT_DATASTORE');
它抛出以下异常:
ora-29833 indextype不存在
我也试过了basic_wordlist
。它无法正常工作
有人可以建议为通配符搜索创建索引的最佳方法吗?
答案 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