将 Oracle Text "near" 运算符绑定到相同的句子

Bound Oracle Text "near" operator to the same sentences

我有一个存储多句段落的列,我正在使用 "Near" 语句来查找正确的记录。但是,是否可以绑定仅在同一句子中查找单词的近语句。

例如:

段落

"An elderly man has died as a result of coronavirus in the Royal Hobart Hospital overnight. It follows the death of a woman in her 80s in the North West Regional Hospital in Burnie on Monday morning, and brings the national toll to 19. "

索引类型是ctxsys.context

select 得分(1) 从 表 在哪里 包含(段落, 'Near (coronavirus, death),20,false)',1) > 0

我想要的结果是 nothing 因为这两个词来自不同的句子。但是,现在它将 return 我一个正数,因为两个词相距不到 20 个词。

你能分享一些关于如何做到这一点的想法吗?

提前致谢!

查询应如下所示:

select score(1) 
from   tbl
where  contains(Paragraph, 'Near (coronavirus, death),20,false) 
                            WITHIN SENTENCE',1) > 0
;

即 - 使用 WITHIN 运算符。

注意一定要先告诉索引识别句子。也就是说:如果您使用这样的语句创建索引:

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

其中 parameters(如果您使用了该子句)没有说明任何关于 "sentences" 的信息,如果您尝试上面的查询,您将得到一个错误 - 类似于

DRG-10837: section sentence does not exist

首先,您必须为句子定义 "special" 个部分:

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')
;

现在您已准备好成功运行本答案顶部的查询。