Oracle Contains无法正常工作

Oracle Contains无法正常工作,第1张

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-----------Q234567Q2 234567select * from test1 where contains(must_fix_by, 'Q2') > 0;no rows selected

默认情况下,

CONTEXT
索引需要手动同步。您要么需要运行:
execctx_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
过滤器将其拾取。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5666401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存