将 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')
;
现在您已准备好成功运行本答案顶部的查询。
我有一个存储多句段落的列,我正在使用 "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')
;
现在您已准备好成功运行本答案顶部的查询。