أحم*_*لحة 5 sql oracle oracle-text
我正在使用Oracle文本搜索句子语料库我希望得分只计算离散事件,
示例:我的查询是 ( dog cat table )
如果它找到术语"狗",它必须计数1,即使该句子有多个"狗"术语.如果它发现"狗猫"它必须数2 ...等
我使用了这个查询,但如果找到两个术语,它会给我51个.我需要累积离散事件.所以我想要覆盖Oracle Text评分算法的行为.
select /*+ FIRST_ROWS(1)*/ sentence_id
,score(1) as sc
, isn
,sentence_length
from plag_docsentences
where contains(PROCESSED_TEXT,'DEFINESCORE(dog, DISCRETE*.01)
,DEFINESCORE(cat, DISCRETE*.01)'
,1)>0
order by score(1) desc
Run Code Online (Sandbox Code Playgroud)
好的,我解决了这个问题。
假设我找到 3 项中的 2 项,得分将为 67,这意味着 ( 2/3=67 ) 这是 oracle 文本评分算法的默认行为。所以我推导了一个方程来查找出现次数(即在语料库句子中找到的查询中的术语数量),如下所示:
x/query_length = 分数/100
然后
x=查询长度 * 分数/100
这将找到查询和语料库查询之间匹配单词的数量
我希望这对IR研究人员有所帮助。