2014-12-05 64 views
5

我使用Oracle文本句子 的语料库我想进球是因为只计算离散事件进行搜索,Oracle Text的definescore与ACCUM和查询重写

例子:我的查询是(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 

回答

1

好的,我解决了这个问题。

假设我从3中找出2个项目,得分为67 这意味着(2/3 = 67)这是oracle文本评分算法的默认行为。 所以导出的等式找到出现的次数(即,在查询词语在语料库中的句子中找到的号码) 如下:

X/query_lenght =得分/ 100

然后

X = query_lenght *得分/ 100

这将找到的查询和胼查询之间的匹配单词的数量

我希望这将有助于IR的reasearchers。

+0

但还有一个问题,得分从未100%,任何想法? – 2015-08-03 09:48:10