您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Oracle Contains无法正常工作

Oracle Contains无法正常工作

可能的两个原因-索引可能不同步,并且CONTAINS似乎在LIKE匹配字符串时匹配单词。

两个字符串的示例,其中LIKE两个都匹配,但CONTAINS都不匹配:

create table test1(must_fix_by varchar2(4000));
create index cidx_mustfixby on test1(must_fix_by) indextype is ctxsys.context;
insert into test1 values('Q234567');
insert into test1 values('Q2 234567');
select * from test1 where must_fix_by like 'Q2%';

MUST_FIX_BY
-----------
Q234567
Q2 234567

select * from test1 where contains(must_fix_by, 'Q2') > 0;

no rows selected

认情况下,CONTEXT索引需要手动同步。您要么需要运行:exec ctx_ddl.sync_index('cidx_mustfixby');,要么需要使用创建索引on commit

exec ctx_ddl.sync_index('cidx_mustfixby');
select * from test1 where contains(must_fix_by, 'Q2') > 0;

MUST_FIX_BY
-----------
Q2 234567

解决了其中一个问题。但是Q234567还是不匹配。我对Oracle Text不太了解,甚至找不到关于其CONTAINS工作原理的简单描述。但这似乎是基于完整的单词而不是字符串。Q2和其他字符之间需要有某种类型的单词边界,才能通过简单的CONTAINS过滤器将其拾取。

Oracle 2022/1/1 18:51:51 有403人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶