暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

oracle catsearch不查询

askTom 2017-08-31
434

问题描述

嗨,

我正在使用oracle 12.1,Catsearch查询 “a但不是b” 与catsearch (列,'a-b',null)>0一起工作。但是我不能只查询 “不是b”。

这是一个测试:
create table test_catsearch(name varchar2(100)); 
insert into  test_catsearch(name) values('Lisa Smith');
insert into  test_catsearch(name) values('Bart Simpson');
insert into  test_catsearch(name) values('Lisa Simpson');
create index cat_test on TEST_CATSEARCH(name) indextype is CTXSYS.CTXCAT;
复制


“辛普森不是巴特” 返回 “丽莎辛普森” 效果很好:
SELECT name FROM TEST_CATSEARCH t WHERE CATSEARCH(name, 'simpson - bart', null)> 0 ;
复制


将 '-' 用于 “非bart” 时DRG-50901错误
SELECT name FROM TEST_CATSEARCH t WHERE CATSEARCH(name, ' - bart', null)> 0 ;
复制

改变条件不会有什么不同:
SELECT name FROM TEST_CATSEARCH t WHERE CATSEARCH(name, 'bart', null)<=0 ; -- changing condition on score not working, same result as first query
SELECT name, score(1) FROM TEST_CATSEARCH t WHERE CATSEARCH(name, 'bart', null)<=0 ; --ORA-29908: missing primary invocation for ancillary operator
复制

也不使用逻辑 “不”
SELECT name FROM TEST_CATSEARCH t WHERE NOT(CATSEARCH(name, 'bart', null)>0);--logical not on condition doesn't have impact on result neither
复制

我的问题是:
是否有使用catsearch() 仅查询 “不b” 的替代方法?
Catsearch() 返回数字,但似乎与上下文查询中的分数不同。这是否意味着条件结束时> 0?

专家解答

catsearch中没有基本的不是。您可以通过从整个表中减少包含此值的行来模拟它:

SELECT name FROM TEST_CATSEARCH
minus
SELECT name FROM TEST_CATSEARCH t WHERE CATSEARCH(name, 'bart', null)> 0 ;

NAME          
Lisa Simpson  
Lisa Smith 
复制


。.. 但是您为此扫描了两次数据。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论