Oracle “装订甲骨文”;近;相同句子的运算符

Oracle “装订甲骨文”;近;相同句子的运算符,oracle,oracle-text,Oracle,Oracle Text,我有一个存储多个句子的段落的专栏,我正在使用“Near”语句寻找正确的记录。然而,是否有可能将仅查找同一句子中单词的near语句绑定起来 例如: 段落 “一位老人在皇家医院死于冠状病毒 霍巴特医院。它紧跟着一位80多岁的妇女的死亡 周一早上在伯尼的西北地区医院 使全国死亡人数达到19人。” indextype为ctxsys.context 挑选 分数(1) 从…起 tbl 哪里 包含(第, '接近(冠状病毒,死亡),20,假',1)>0 我想要的结果是什么都没有,因为这两个词来自不同的句子。然而

我有一个存储多个句子的段落的专栏,我正在使用“Near”语句寻找正确的记录。然而,是否有可能将仅查找同一句子中单词的near语句绑定起来

例如:

段落 “一位老人在皇家医院死于冠状病毒 霍巴特医院。它紧跟着一位80多岁的妇女的死亡 周一早上在伯尼的西北地区医院 使全国死亡人数达到19人。”

indextype为ctxsys.context

挑选 分数(1) 从…起 tbl 哪里 包含(第, '接近(冠状病毒,死亡),20,假',1)>0

我想要的结果是什么都没有,因为这两个词来自不同的句子。然而,现在它将返回一个正数,因为两个单词之间的间隔不到20个单词

你能告诉我怎么做吗


提前谢谢

查询应如下所示:

select score(1) 
from   tbl
where  contains(Paragraph, 'Near (coronavirus, death),20,false) 
                            WITHIN SENTENCE',1) > 0
;
create index ctxidx on tbl(Paragraph)
indextype is ctxsys.context
-- parameters(' ... ')
;
即-在操作符中使用

请注意,您必须告诉索引首先识别句子。即:如果使用以下语句创建索引:

select score(1) 
from   tbl
where  contains(Paragraph, 'Near (coronavirus, death),20,false) 
                            WITHIN SENTENCE',1) > 0
;
create index ctxidx on tbl(Paragraph)
indextype is ctxsys.context
-- parameters(' ... ')
;
如果
参数
(如果您使用了该子句)没有说明任何有关“句子”的内容,那么如果您尝试上面的查询,您将得到一个错误-类似于

DRG-10837: section sentence does not exist
首先,您必须定义句子的“特殊”部分:

begin 
  ctx_ddl.create_section_group('my_section_group', 'AUTO_SECTION_GROUP');
  ctx_ddl.add_special_section('my_section_group', 'SENTENCE');
end;
/
有了这个:

drop index ctxidx;

create index ctxidx on tbl(Paragraph)
indextype is ctxsys.context
parameters ('section group my_section_group')
;

现在,您可以成功运行此答案顶部的查询了。

嗨,Mathguy,谢谢您的帮助。但是,我在尝试创建节组时遇到ORA-06550“必须声明CTX_DDL”。我错过了什么吗?@ELeung-使用Oracle文本的用户(可能就是你)必须在
CTXSYS.CTX_DDL
包上获得
execute
权限。如果您有DBA,请与他或她交谈。如果您是自己的DBA,请阅读Oracle文本文档;这是创建Oracle文本用户(即定期使用Oracle文本的数据库用户)时必须完成的第一件事情之一。Thx Mathguy!我将与我的DBA核实。:)@ELeung-将您的DBA指向文档(下面的链接)-有几个包,他必须授予您
execute
特权。(请确保找到与Oracle数据库版本相同的文档;这是我使用的12.1版文档)。嗨,Mathguy,由于新冠病毒19,我还在等待我的DBA回复我。然而,在等待的过程中,我使用了老派的愚蠢风格,用50个虚词替换了所有句号(.)。“Z.”。(这会导致两句话相隔50个单词,会不会对分数造成影响?非常感谢!