|
I tried to create a text index with chinese_lexer. But it doesn't seem to be what you want, unless I didn't get it right.
create table testcn (x varchar2(30));
insert into testcn values ('你好,川ABC123');
exec ctx_ddl.create_preference('chinese_lexer_pref', 'chinese_lexer')
exec ctx_ddl.set_attribute('chinese_lexer_pref', 'mixed_case_ASCII7', 'TRUE')
create index testcn_i on testcn (x) indextype is ctxsys.context parameters ('lexer chinese_lexer_pref');
select token_text from dr$testcn_i$i;
The last query shows 3 tokens (i.e. search keywords) have been created: ABC123, 你好, 川. Your application query would be like
select * from testcn where contains(x, 'ABC123') > 0;
select * from testcn where contains(x, '川') > 0;
Unfortunately, the following doesn't return anything:
select * from testcn where contains(x, 'BC123') > 0;
or even a fuzzy search ("fuzzy" in the real sense as in Oracle's Text Reference documentation)
select * from testcn where contains(x, 'fuzzy(BC123,,,weight)', 1) > 0; |
|