Oracle11g oracle中具有多列的上下文索引不返回任何行
我使用以下语句创建上下文索引:Oracle11g oracle中具有多列的上下文索引不返回任何行,oracle11g,Oracle11g,我使用以下语句创建上下文索引: create TABLE test_context_index (id number, column1 VARCHAR2(30), column2 VARCHAR2(30), column3 VARCHAR2(30) ) / INSERT INTO test_context_index (ID,COLUMN1,COLUMN2,COLUMN3) VALUES(1,'tinhah','test','test data'); INSERT INTO test_cont
create TABLE test_context_index
(id number,
column1 VARCHAR2(30),
column2 VARCHAR2(30),
column3 VARCHAR2(30)
)
/
INSERT INTO test_context_index (ID,COLUMN1,COLUMN2,COLUMN3)
VALUES(1,'tinhah','test','test data');
INSERT INTO test_context_index (ID,COLUMN1,COLUMN2,COLUMN3)
VALUES(2,'tinehaeh','test 12','abc');
/
begin
ctx_ddl.create_preference('my_multi', 'MULTI_COLUMN_DATASTORE');
ctx_ddl.set_attribute('my_multi', 'columns', 'column1, column2, column3');
end;
create index myindex on test_context_index(column1)
indextype is ctxsys.context
parameters ('DATASTORE my_multi');
我成功地创建了。
我运行语句不返回行,帮帮我
Select * from test_context_index where contains (column1, 'h%') > 0;
尝试:
在开头和结尾都放一个
%
:
Select * from test_context_index where contains (column1, '%h%') > 0;
ID COLUMN1 COLUMN2 COLUMN3
-- ------- ------- -------
1 tinhah test test data
2 tinehaeh test 12 abc
即使在开头使用通配符,仍将使用文本索引:
explain plan for Select * from test_context_index where contains (column1, '%h%') > 0;
select * from table(dbms_xplan.display);
Plan hash value: 2922841387
----------------------------------------------------------
| Id | Operation | Name |
----------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | TABLE ACCESS BY INDEX ROWID| TEST_CONTEXT_INDEX |
| 2 | DOMAIN INDEX | MYINDEX |
----------------------------------------------------------
i、 e.在字符的两边都需要一个通配符,表示包含h。如果你想让你的左边包含h,你可以用“h%”
explain plan for Select * from test_context_index where contains (column1, '%h%') > 0;
select * from table(dbms_xplan.display);
Plan hash value: 2922841387
----------------------------------------------------------
| Id | Operation | Name |
----------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | TABLE ACCESS BY INDEX ROWID| TEST_CONTEXT_INDEX |
| 2 | DOMAIN INDEX | MYINDEX |
----------------------------------------------------------